home *** CD-ROM | disk | FTP | other *** search
/ System Booster / System Booster.iso / Diskmonitors / ShowDisk / Show_Disk.s < prev   
Text File  |  1996-09-26  |  72KB  |  3,554 lines

  1.         opt l-,p-
  2.  
  3. _LVOAllocMem    equ    -198
  4. _LVOFreeMem    equ    -210
  5. _LVOAvailMem    equ    -216
  6. _LVOAllocAbs    equ    -204
  7. _LVOFreeEntry    equ    -228
  8. _LVOAddTask    equ    -282
  9. _LVOInsert    equ    -234
  10. _SysBase    equ    4
  11.  
  12. _LVOOpenScreen    equ    -198
  13. _LVOOpenWindow    equ    -204
  14. _LVOCloseScreen    equ    -66
  15. _LVOCloseWindow    equ    -72
  16. _LVOScreenToFront equ    -252
  17. _LVOScreenToBack equ    -246
  18. _LVOWindowToFront equ    -312
  19. _LVOWindowToBack equ    -306
  20. _LVOMoveWindow  equ    -168
  21. _LVOModifyIDCMP    equ    -150
  22. _LVOPolyDraw    equ    -336
  23. _LVOMove    equ    -240
  24. _LVOSetAPen    equ    -342
  25. _LVORectFill    equ    -306
  26. _LVODraw    equ    -246
  27. _LVOText    equ    -60
  28. _LVOScrollRaster equ    -396
  29.  
  30. _LVOWait    equ    -318
  31. _LVOAllocSignal equ    -330
  32. _LVOFreeSignal  equ    -336
  33. _LVOSignal     equ    -324
  34. _LVOGetMsg    equ    -372
  35. _LVOAllocMem    equ    -198
  36. _LVOFreeMem    equ    -210
  37.  
  38. _LVOViewPortAdress equ  -300
  39. _LVOSetRGB4    equ    -288
  40. _LVOSetAPen    equ    -342
  41. _LVOSetBPen    equ    -348
  42. _LVOWritePixel    equ    -324
  43.  
  44. _LVOOpen    equ    -30
  45. _LVOClose    equ    -36
  46. _LVORead    equ    -42
  47. _LVOWrite    equ    -48
  48. _LVOOutput    equ    -60
  49. _LVOCurrentTime    equ    -84
  50. _LVOFindTask    equ    -294
  51. _LVORemTask    equ    -288
  52. _LVODelay    equ    -198
  53. _LVOOpenLibrary    equ    -552
  54. _LVOCloseLibrary    equ    -414
  55.  
  56. _LVOAddPort        equ    -354
  57. _LVORemPort        equ    -360
  58. _LVOFindPort        equ    -390
  59. _LVOGetMsg        equ    -372
  60. _LVOPutMsg        equ    -366
  61. _LVOReplyMsg        equ    -378
  62.  
  63. _LVOAddIntServer    equ    -168
  64. _LVORemIntServer    equ    -174
  65.  
  66. _SysBase         equ    4        ;Basis von Exec
  67. _LVOOpenLibrary  equ    -552          ;Library oeffnen
  68. _LVOCloseLibrary equ    -414        ;Library schliessen
  69.  
  70. _LVOLock    equ    -84
  71. _LVOUnLock    equ    -90
  72. _LVOExecute    equ    -222
  73. _LVOCurrentDir    equ    -126
  74.  
  75. _LVOAllocEntry    equ    -222
  76. _LVOKickSumData    equ    -612
  77.  
  78.     
  79. _LVOItemAdress    equ    -144
  80. _LVOSetMenuStrip equ    -264
  81. _LVOClearMenuStrip equ    -54
  82.  
  83.  
  84. _LVOOpenDevice        equ    -444
  85. _LVOCloseDevice        equ    -450
  86. _LVODoIo        equ    -456
  87.  
  88.  
  89. _LVOWaitPort        equ    -384
  90. _LVOForbid        equ    -132
  91. pr_CLI        equ    172
  92. pr_MsgPort    equ    92
  93.  
  94.  
  95. xl1        equ    0
  96. yl1        equ    4
  97. xr1        equ    8
  98. yr1        equ    12
  99. xl2        equ    16
  100. yl2        equ    20
  101. xr2        equ    24
  102. yr2        equ    28
  103. xxl1        equ    32
  104. yyl1        equ    36
  105. xxr1        equ    40
  106. yyr1        equ    44
  107. xxl2        equ    48
  108. yyl2        equ    52
  109. xxr2        equ    56
  110. yyr2        equ    60
  111.  
  112. rp        equ    -4
  113. dfi        equ    -16        ; Nr Laufwerk
  114. bmflag        equ    -20        ; mit/ohne Bitmap
  115. tr_open        equ    -24        ; Kennung für Track-Device offen/zu
  116. bl_adr        equ    -28        ; ^auf Spei für 1 Block lesen (512)
  117. spei_verw    equ    -32        ; ^ auf Speicher um Sp-Adr zu speichern
  118. spei_off    equ    -36        ; fortlaufendes Offset dazu
  119. ueb_ga1        equ    -40        ; übergabe 1 (^ auf Sp von tatsächl Werte)
  120. ueb_ga2        equ    -44        ; übergabe 2 (^ auf Spei für Adr)
  121. ak_dir        equ    -48        ; zeigt auf aktuelles Dir (n Schatten)
  122. text_roh    equ    -52        ; ^ auf Speicher f ungeordneten Text
  123. text_geo    equ    -56        ; ^ auf Speicher f geordneten Text
  124. an_dir        equ    -60        ; Anzahl Zeilen im dir
  125. erste_im_dir    equ    -64        ; Erste sichtbare (gescrollte) Zeile
  126. erste_merken    equ    -68        ; ^auf den Textspeicher der 1. sichtbaren
  127. gr_pfad        equ    -72        ; Anzahl buchstaben Pfadname
  128. nr_gewählt    equ    -76        ; gewählte Nr
  129. all_num        equ    -80        ; ^ auf Speicher mit allen Nr gezeichneter Balken 
  130. lfd_num        equ    -84        ; zeigt auf nächstes freies Nr-Feld(innerhalb von all_num)
  131. n_chain_n    equ    -88        ; ^auf Spei wo next-Chain-Nr (n Sch)
  132. n_chain_s    equ    -92        ; ^auf Spei wo next-Chain-Nr (Sch)
  133. meldung        equ    -96        ; 0 keine Meldung,1 Meldung
  134. select_down    equ    -100        ; 1 Maus down, 0 Maus up
  135. alte_bl_nr    equ    -104
  136. head        equ    -108        ; 0,1
  137. block        equ    -112
  138. track        equ    -116
  139. sektor        equ    -120
  140. mouse_x        equ    -124        ; Mousekoor. retten (f Fenster versvhieben)
  141. mouse_y        equ    -128
  142. text_zw        equ    -132        ; ^ auf Spei für zwischen-geord. Text
  143. spr_farben    equ    -136
  144. select_left    equ    -140        ; links runter
  145. an_sc        equ    -144        ; 1,2,3 scrollen
  146.  
  147. spei_grö_verw    equ    1000
  148. spei_grö    equ    532
  149. off        equ    spei_grö-512
  150. chain        equ    124*4+off
  151. parent        equ    125*4+off    ; ^auf Patent (Schatten)
  152. extension    equ    126*4+off    ; (keine Zwischenräume beim Rechnen)
  153. sec_type    equ    127*4+off
  154. hasch_r        equ    77*4+off
  155. hasch_v        equ    6*4+off    
  156. name        equ    108*4+off
  157. dir_eintr    equ    105*4+off    ; Anzahl dir-Einträge (in n schatten vermerkt)
  158. ist_gelesen    equ    106*4+off    ; 1 dann dir bereits gelesen ( im n Schatten)
  159. eigen        equ    1*4+off        ; eigene Block-Nr
  160. text_br        equ    40        ; Speicherbreite pro Zeile bei textausgabe
  161. spei_grö_text    equ    100*text_br
  162. off_zei        equ    30        ; ^ auf Block wo dir ( schatten)
  163. off_dir        equ    34        ; Kennung welcher typ
  164. off_bu        equ    38        ; Anzahl Buchstaben
  165. off_hin        equ    39        ; kennung zum ordnen
  166. off_off        equ    30        ; offset auf offset(*40) im Zwischentext
  167. text_x        equ    6        ; koordinaten für Textbeginn (x)
  168. text_y        equ    35        ; koordinaten für Textbeginn (y)
  169.  
  170. text_yo        equ    25        ; koord Textfenster
  171. text_xo        equ    20        ; koord Textfenster
  172. text_xu        equ    248        ; koord Textfenster
  173. text_yu        equ    233        ; koord.Textfenster
  174.  
  175. xl_1        equ    290            
  176. yl_1        equ    5            
  177. xr_1        equ    290+11*12-2+8        
  178. yr_1        equ    5+80*3-1+3    
  179.  
  180. xl_2        equ    460            
  181. yl_2        equ    5            
  182. xr_2        equ    460+11*12-2+8        
  183. yr_2        equ    5+80*3-1+3        
  184.  
  185. an_zeilen    equ    20
  186.  
  187.     
  188. DELAY        macro
  189.  
  190.     lea    _DosBase(pc),a6
  191.     move.l    (a6),a6
  192.     move.l    #\1,d1
  193.     jsr    _LVODelay(a6)
  194.  
  195.     endm
  196.  
  197. MENUSTR        macro
  198. men_na\1
  199.     dc.l    \2        ; Zeiger auf nächsten Menutitel
  200.     dc.w    \3,\4        ; linke,obere Ecke
  201.     dc.w    \5,0        ; Breite,Höhe (werden ignoriert)
  202.     dc.w    1        ; Flags (Menuenabled=1)
  203.     dc.l    \6        ; Zeiger auf Menutitel
  204.     dc.l    \7        ; Zeiger auf Str Menuitem
  205.     dc.w    0,0,0,0        ; Systemvariablen
  206.  
  207.     endm
  208.  
  209.  
  210. ITEMSTR        macro
  211. item\1
  212.     dc.l    \2        ; Zeiger auf nächstes Item
  213.     dc.w    \3,\4        ; links,oben
  214.     dc.w    \5,\6        ; Breite,Höhe
  215.     dc.w    \7        ; Text $2 + aktiviert $10 + kompletiert $40
  216.     dc.l    0        ; keine Abhängigkeiten
  217.     dc.l    mentext\1    ; Zeiger auf Menutext
  218.     dc.l    0        ; kein alternativer Text
  219.     dc.b    \8        ; alternative Tastaturangabe
  220.     dc.b    0        ; leer
  221.     dc.l    0        ; Zeiger auf Untermenu
  222.     dc.w    0        ; Intuition-Flag
  223.  
  224.     endm
  225.  
  226.  
  227.  
  228. TEXTSTR        macro
  229. mentext\1
  230.     dc.b    \2        ; Vordergrundfarbe
  231.     dc.b    \3        ; Hintergrundfarbe
  232.     dc.b    \6        ; Zeichenmodus JAM = 2 Invertiert = 0 Normal
  233.     dc.b    0        ; leer
  234.     dc.w    \4,\5        ; linke,obere Ecke
  235.     dc.l    0        ; voreingestellter Zeichensatz
  236.     dc.l    mtext\1        ; Zeiger auf String
  237.     dc.l    0        ; keine weitere Int-Test-str
  238.  
  239.     endm
  240.  
  241. VERGLEICHMENU     macro            ; benutzt d0-d5,Mauskoor in d4,nicht überschrieben
  242.                     ; d2 außerhalb erhöhen,
  243.                     ; innerhalb dann d2 -> d5
  244.     move.l    d4,d3            ; y-Wert in d3
  245.     and.l    #$ffff,d3        ; und maskieren
  246.     move.l    #0,d1            ; Zählregister
  247.     move.l    #\2,d0
  248.     cmp.l    d0,d3
  249.     bls    vergl1\@
  250.     add.l    #1,d1
  251. vergl1\@
  252.     move.l    #\4,d0
  253.     cmp.l    d0,d3
  254.     bgt    vergl2\@
  255.     add.l    #1,d1
  256. vergl2\@
  257.     move.l    d4,d3            ; x-Wert in d3
  258.     lsr.l    #8,d3
  259.     lsr.l    #8,d3
  260.     move.l    #\1,d0
  261.     cmp.l    d0,d3
  262.     bls    vergl3\@
  263.     add.l    #1,d1
  264. vergl3\@
  265.     move.l    #\3,d0
  266.     cmp.l    d0,d3
  267.     bgt    vergl4\@
  268.     add.l    #1,d1
  269. vergl4\@
  270.     cmp.l    #4,d1
  271.     bne    vergl5\@
  272.     move.l    d2,d5
  273. vergl5\@
  274.  
  275.     endm
  276.  
  277. LIBOEFFNEN    macro
  278.  
  279.     lea    \1(pc),a1
  280.     moveq    #0,d0
  281.     move.l    _SysBase,a6
  282.     jsr    _LVOOpenLibrary(a6)
  283.     tst.l    d0
  284.     beq    fini
  285.     lea    \2(pc),a0
  286.     move.l    d0,(a0)
  287.     
  288.     endm
  289.  
  290. LIBSCHL        macro
  291.  
  292.     lea    \1(pc),a1
  293.     move.l    (a1),a1
  294.     move.l    _SysBase,a6
  295.     jsr    _LVOCloseLibrary(a6)
  296.  
  297.     endm
  298.  
  299. LINIE    macro
  300.  
  301.     lea    _GfxBase(pc),a6        
  302.     move.l    (a6),a6        
  303.     move.l     rp(a5),a1
  304.     move.l    \1,d0
  305.     move.l    \2,d1
  306.     
  307.     IFEQ NARG-5
  308.     add.l    #\5,d0
  309.     ENDC
  310.     
  311.     jsr    _LVOMove(a6)
  312.     move.l     rp(a5),a1
  313.     move.l    \3,d0
  314.     move.l    \4,d1
  315.         
  316.     IFEQ NARG-5
  317.     add.l    #\5,d0
  318.     ENDC
  319.     
  320.     jsr    _LVODraw(a6)
  321.     
  322.     endm
  323.  
  324. RECHTECK macro
  325.  
  326.            LINIE  \1,\2,\1,\4
  327.            LINIE  \1,\2,\1,\4,1
  328.            LINIE  \1,\4,\3,\4
  329.            LINIE  \3,\4,\3,\2
  330.            LINIE  \3,\4,\3,\2,-1
  331.            LINIE  \3,\2,\1,\2
  332.  
  333.     endm
  334.  
  335. FARBE        macro            ;um Farben zu setzen
  336.     lea    _GfxBase(pc),a6        ; zuerst Farben setzen
  337.     move.l    (a6),a6            ; _GfxBase in a6
  338.     lea    viewportadv(pc),a0
  339.     move.l    (a0),a0
  340.     move.l    #\1,d0
  341.     move.l    #\2,d1
  342.     move.l    #\3,d2
  343.     move.l    #\4,d3
  344.     jsr    _LVOSetRGB4(a6)
  345.  
  346.     endm
  347.  
  348.  
  349. PEN     macro
  350.     
  351.     lea    _GfxBase(pc),a6        ; 
  352.     move.l    (a6),a6
  353.  
  354.     move.l     rp(a5),a1
  355.     move.l    #\1,d0
  356.     jsr    _LVOSetAPen(a6)
  357.     
  358.         
  359.     IFEQ NARG-2
  360.     move.l     rp(a5),a1
  361.     move.l    #\2,d0
  362.     jsr    _LVOSetBPen(a6)
  363.     ENDC
  364.     
  365.     
  366.     endm
  367.  
  368. TEXT    macro
  369.  
  370.     lea    _GfxBase(pc),a6         
  371.     move.l    (a6),a6
  372.  
  373.     move.l    rp(a5),a1
  374.     move.l    \1,d0            
  375.     move.l    \2,d1
  376.     jsr    _LVOMove(a6)
  377.  
  378.     move.l    rp(a5),a1
  379.     move.l    #\3,d0            ; Länge
  380.     lea    \4,a0
  381.     jsr    _LVOText(a6)
  382.  
  383.     endm
  384.  
  385.  
  386. *-----------------------------------------------------------------
  387.  
  388. * Startup-Code fuer Assembler-Programme. 
  389. * -----------------------------------------------------------
  390.  
  391.  
  392.     move.l    _SysBase,a6    
  393.  
  394.     movem.l     d0/a0,-(sp)        ;rette Kommandozeile
  395.     clr.l     _WBenchMsg        ;sicherheitshalber
  396.  
  397. * Teste, von wo wir gestartet wurden
  398. * ----------------------------------
  399.     sub.l     a1,a1            ;a1=0 = eigener Task
  400.     jsr    _LVOFindTask(a6)    ;wo sind wir?
  401.     move.l     d0,a4            ;Adresse retten
  402.  
  403.     tst.l     pr_CLI(a4)              ;Laufen wir unter WB?
  404.     beq.s     fromWorkbench        ;wenn so
  405.  
  406. * Wir wurden vom CLI gestartet
  407. * ----------------------------
  408.     movem.l     (sp)+,d0/a0        ;Parms Kommandozeile holen
  409.     bra     run            ;und starten
  410.  
  411. * Wir wurden von  Workbench gestartet
  412. * -----------------------------------
  413. fromWorkbench
  414.     lea     pr_MsgPort(a4),a0
  415.     jsr    _LVOWaitPort(a6)    ;Warte auf Start-Message
  416.     lea     pr_MsgPort(a4),a0    ;sie ist da
  417.     jsr    _LVOGetMsg(a6)        ;hole sie
  418.     move.l     d0,_WBenchMsg        ;immer Msg sichern!
  419.  
  420.     movem.l     (sp)+,d0/a0        ;bringe Stack i.O.
  421.  
  422.  
  423. run    bsr.s     _main            ;rufe unser Programm auf
  424.  
  425.     move.l     d0,-(sp)        ;rette seinen Return-Code
  426.  
  427.     tst.l     _WBenchMsg             ;gibt's eine WB-Message
  428.     beq.s     _exit            ;nein: dann war's CLI
  429.  
  430.     jsr    _LVOForbid(a6)        ;keine Unterbrechung jetzt
  431.     move.l     _WBenchMsg(pc),a1    ;hole die Message
  432.     jsr    _LVOReplyMsg(a6)    ;und gib sie zurueck
  433.  
  434. _exit
  435.     move.l     (sp)+,d0        ;hole Return-Code
  436.     rts                ;das war's
  437.  
  438. _WBenchMsg     ds.l    1
  439.  
  440.     cnop     0,2
  441.  
  442.  
  443. _main                    ; ab hier steht Prg
  444. *-----------------------------------------------------------------
  445.  
  446.     lea    tabelle(pc),a5
  447.     move.l    #0,dfi(a5)        ; df0
  448.     move.l    #1,bmflag(a5)        ; bitmap-flag = 1 => mit bitmap
  449.     move.l    #0,tr_open(a5)        ; trackdisk-device offen = 1
  450.     move.l    #0,meldung(a5)        ; Meldungsfeld auf 0 setzen
  451.     move.l    #0,select_down(a5)    ; nicht runtergeklickt
  452.     move.l    #0,select_left(a5)    ; nicht runtergeklickt (links)
  453.     move.l    #0,alte_bl_nr(a5)
  454.     lea    farben_normal_1,a0
  455.     move.l    a0,spr_farben(a5)
  456.  
  457.     LIBOEFFNEN    dosname,_DosBase
  458.     LIBOEFFNEN    intname,_IntBase
  459.     LIBOEFFNEN    grafname,_GfxBase
  460.  
  461.  
  462. *Screen u. Window öffnen----------------------------------------- v ----
  463.  
  464.     lea    NewScreen(pc),a0    ; Screen öffnen
  465.     lea    _IntBase(pc),a6        
  466.     move.l    (a6),a6
  467.     jsr    _LVOOpenScreen(a6)
  468.     lea    screen(pc),a0        ; und fuer die window-struktur
  469.     move.l    d0,(a0)
  470.     cmp.l    #0,d0
  471.     beq    screen_0
  472.     
  473.     lea    NewWindow(pc),a0    ; Window öffnen,_IntBase noch vorhanden
  474.     jsr    _LVOOpenWindow(a6)
  475.     lea    windowv(pc),a0        ; Windowzeiger sichern    
  476.     move.l    d0,(a0)
  477.     cmp.l    #0,d0
  478.     beq    window_0
  479.     move.l    d0,a0
  480.     move.l    50(a0),d0        ; Rastportadr. in d0
  481.     lea    rastportv(pc),a0    ; Rastportadr. sichern
  482.     move.l    d0,(a0)    
  483.     move.l    d0,rp(a5)
  484.  
  485.     lea    _IntBase(pc),a6        ; Viewportadr. holen
  486.     move.l    (a6),a6
  487.     lea    windowv(pc),a0
  488.     move.l    (a0),a0
  489.     jsr    _LVOViewPortAdress(a6)
  490.     lea    viewportadv(pc),a0
  491.     move.l    d0,(a0)
  492.  
  493.     bsr    farben_schwarz
  494.  
  495.     lea    screen(pc),a0
  496.     lea    screen_b(pc),a1
  497.     move.l    (a0),(a1)
  498.  
  499.     lea    _IntBase(pc),a6        
  500.     move.l    (a6),a6
  501.  
  502.     lea    NewWindow_b(pc),a0    ; Window Block öffnen
  503.     jsr    _LVOOpenWindow(a6)    ; --------------------
  504.     lea    window_b(pc),a0        ; Windowzeiger sichern    
  505.     move.l    d0,(a0)
  506.     cmp.l    #0,d0
  507.     beq    window_b0
  508.     move.l    d0,a0
  509.     move.l    50(a0),d0        ; Rastportadr. in d0
  510.     lea    rastport_b(pc),a0    ; Rastportadr. sichern
  511.     move.l    d0,(a0)    
  512.     move.l    d0,rp(a5)
  513.  
  514.     lea    _IntBase(pc),a6        ; Viewportadr. holen
  515.     move.l    (a6),a6
  516.     lea    window_b(pc),a0
  517.     move.l    (a0),a0
  518.     jsr    _LVOViewPortAdress(a6)
  519.     lea    viewportad_b(pc),a0
  520.     move.l    d0,(a0)
  521.  
  522.     lea    window_b(pc),a0        ; kl Fenster nach hinten
  523.     move.l    (a0),a0
  524.     jsr    _LVOWindowToBack(a6)
  525.  
  526.     PEN     13
  527.     
  528.     move.l    rp(a5),a1
  529.     move.l    #0,d0
  530.     move.l    #0,d1
  531.     move.l    #160,d2
  532.     move.l    #70,d3
  533.     jsr    _LVORectFill(a6)
  534.  
  535.     PEN     15                ; weiß
  536.  
  537.     LINIE    #4,#67,#155,#67 
  538.     LINIE    #4,#66,#155,#66 
  539.  
  540.     PEN     0                ; schwarz
  541.  
  542.     LINIE    #4,#2,#155,#2 
  543.     LINIE    #4,#3,#155,#3 
  544.     LINIE    #155,#4,#155,#67 
  545.     LINIE    #154,#4,#154,#67 
  546.     LINIE    #153,#4,#153,#66 
  547.     LINIE    #152,#4,#152,#66 
  548.  
  549.     PEN     15
  550.  
  551.     LINIE    #4,#2,#4,#67 
  552.     LINIE    #5,#2,#5,#67 
  553.     LINIE    #6,#3,#6,#67 
  554.     LINIE    #7,#3,#7,#67 
  555.  
  556.  
  557.     lea    rastportv(pc),a0
  558.     move.l    (a0),rp(a5)
  559.  
  560.     PEN 1
  561.  
  562.     RECHTECK xl1(a5),yl1(a5),xr1(a5),yr1(a5)
  563.     RECHTECK xl2(a5),yl2(a5),xr2(a5),yr2(a5)
  564.  
  565.     bsr    raster
  566.  
  567.     PEN 1
  568.     bsr    tabellieren
  569.     
  570.     PEN 4
  571.     move.l    rp(a5),a1
  572.     move.l    xxl1(a5),d0
  573.     move.l    yyl1(a5),d1
  574.     move.l    xxr1(a5),d2
  575.     move.l    yyr1(a5),d3
  576.     jsr    _LVORectFill(a6)
  577.  
  578.     move.l    rp(a5),a1
  579.     move.l    xxl2(a5),d0
  580.     move.l    yyl2(a5),d1
  581.     move.l    xxr2(a5),d2
  582.     move.l    yyr2(a5),d3
  583.     jsr    _LVORectFill(a6)
  584.     
  585.     
  586.     PEN 5
  587.     RECHTECK xxl1(a5),yyl1(a5),xxr1(a5),yyr1(a5)
  588.      
  589.     LINIE    xxl1(a5),#11,xxr1(a5),#11
  590.     LINIE    xxl1(a5),#12,xxr1(a5),#12
  591.     LINIE    xxl1(a5),#23,xxr1(a5),#23
  592.     LINIE    xxl1(a5),#24,xxr1(a5),#24
  593.         
  594.     PEN 8
  595.     RECHTECK xxl2(a5),yyl2(a5),xxr2(a5),yyr2(a5)
  596.  
  597.     PEN 0,4
  598.     TEXT    #80,#8,11,text2(pc)        ;  x,y,Anzahl,^ auf Text
  599.     TEXT    #10,#20,4,text3(pc)        ;  x,y,Anzahl,^ auf Text
  600.     
  601. * ---------------------- alle dfi ermitteln -----------------------
  602.  
  603.     lea    _DosBase(pc),a0            ; alle dfi ermitteln
  604.     move.l    (a0),a0                ; Dosbase in a0
  605.     move.l    34(a0),a0            ; dl_Root -> struct RootNode
  606.     move.l    24(a0),d0            ; rn_Info -> struct DosInfo
  607.     asl.l    #2,d0                ; BPTR * 4
  608.     move.l    d0,a0
  609.     move.l    4(a0),d0            ; di_DevInfo -> struct DeviceNode
  610.     asl.l    #2,d0                ; BPTR * 4
  611.     move.l    d0,a0
  612.  
  613. test_dev0
  614.     cmp.l    #0,d0
  615.     beq    test_d_out
  616.     move.l    40(a0),a1            ; ^ auf Namen
  617.     move.l    a1,d0                ; 
  618.     asl.l    #2,d0                ; BPTR * 4
  619.     move.l    d0,a1
  620.     move.l    #3,d1                ; nach df0-df3 suchen
  621.     lea    dfi_name(pc),a2
  622. test_dev1
  623.     move.l    a2,a4
  624.     move.l    #2,d2
  625.     move.l    a1,a3
  626.     adda.l    #1,a3                ; wegen BCPL - Namen
  627. test_dev2
  628.     cmpm.b    (a3)+,(a4)+
  629.     bne    test_dev4
  630.     dbra    d2,test_dev2
  631.     move.l    #0,(a2)                ; dann 0 anstelle des Namens eintragen
  632.     bra    test_dev5            ; und nächstes aus Liste untersuchen
  633. test_dev4
  634.     adda.l    #4,a2
  635.     dbra    d1,test_dev1
  636. test_dev5
  637.     move.l    (a0),d0                ; nächste -> struct DeviceNode
  638.     asl.l    #2,d0                ; BPTR * 4
  639.     move.l    d0,a0
  640.     bra    test_dev0
  641.         
  642. test_d_out
  643.  
  644.     lea    dfi_name(pc),a2            ; nun 0 in ITEM-str setzen
  645.     move.l    (a2)+,d0
  646.     move.l    (a2)+,d0
  647.     cmp.l    #0,d0                ; df1 = 0 ?
  648.     beq    nicht_1
  649.     lea    item11(pc),a0
  650.     move.l    #0,(a0)
  651. nicht_1    
  652.     move.l    (a2)+,d0
  653.     cmp.l    #0,d0                ; df2 = 0 ?
  654.     beq    nicht_2
  655.     lea    item12(pc),a0
  656.     move.l    #0,(a0)
  657. nicht_2
  658.     move.l    (a2)+,d0
  659.     cmp.l    #0,d0                ; df3 = 0 ?
  660.     beq    nicht_3
  661.     lea    item13(pc),a0
  662.     move.l    #0,(a0)
  663. nicht_3        
  664.  
  665. * ------- Menuaufruf ----------
  666.  
  667.     lea    item22(pc),a0            ; Zeiger auf Untermenü
  668.     lea    item220(pc),a1
  669.     move.l    a1,28(a0)
  670.  
  671.     lea    _IntBase(pc),a6        
  672.     move.l    (a6),a6
  673.     lea    windowv(pc),a0
  674.     move.l    (a0),a0
  675.     lea    Menustruktur(pc),a1    ; Adr der Menustr.
  676.     jsr    _LVOSetMenuStrip(a6)    ; Menu aktivieren - liefert kein Ergebnis !
  677.  
  678.  
  679.     move.l    _SysBase,a6
  680.     move.l    #512,d0
  681.     move.l    #$10002,d1        ; Chip + clear
  682.     jsr    _LVOAllocMem(a6)    ; Speicher fuer einen block
  683.     move.l    d0,bl_adr(a5)
  684.     cmp.l    #0,d0
  685.     beq    bl_0
  686.     
  687.     move.l    #spei_grö_verw,d0
  688.     move.l    #$10000,d1        ; clear
  689.     jsr    _LVOAllocMem(a6)    ; Speicher fuer Speicherverwaltung
  690.     move.l    d0,spei_verw(a5)
  691.     move.l    #0,spei_off(a5)
  692.     cmp.l    #0,d0
  693.     beq    spei_0
  694.     
  695.     move.l    #spei_grö_text,d0
  696.     move.l    #$10000,d1        ; clear
  697.     jsr    _LVOAllocMem(a6)    ; Speicher fuer Textverwaltung(roh)
  698.     move.l    d0,text_roh(a5)
  699.     cmp.l    #0,d0
  700.     beq    text_roh_0
  701.     
  702.     move.l    #spei_grö_text,d0
  703.     move.l    #$10000,d1        ; clear
  704.     jsr    _LVOAllocMem(a6)    ; Speicher fuer Textverwaltung(geordnet)
  705.     move.l    d0,text_zw(a5)
  706.     cmp.l    #0,d0
  707.     beq    text_zw_0
  708.  
  709.     move.l    #spei_grö_text,d0
  710.     move.l    #$10000,d1        ; clear
  711.     jsr    _LVOAllocMem(a6)    ; Speicher fuer Textverwaltung(geordnet)
  712.     move.l    d0,text_geo(a5)
  713.     cmp.l    #0,d0
  714.     beq    text_geo_0
  715.     
  716.     move.l    #1760*2,d0        ; speicher für alle gezeichneten Balken
  717.     move.l    #$10000,d1        ; clear
  718.     jsr    _LVOAllocMem(a6)    ; Speicher fuer Textverwaltung(geordnet)
  719.     move.l    d0,all_num(a5)
  720.     cmp.l    #0,d0
  721.     beq    all_num_0
  722.     
  723.     bsr    farben_normal_1
  724.  
  725. warten
  726.     bsr    frei_ermitteln
  727.  
  728.     lea    windowv(pc),a0        ; Hole Adr. MessagePort des Fensters
  729.     move.l    (a0),a0
  730.     move.l    86(a0),a0        ; steht ab 86
  731.     move.l    _SysBase,a6
  732.     jsr    _LVOWaitPort(a6)    ; Warten auf Msg in Port
  733.  
  734.     lea    windowv(pc),a0        ; Hole Adr. MessagePort des Fensters
  735.     move.l    (a0),a0
  736.     move.l    86(a0),a0        ; steht ab 86
  737.     move.l    _SysBase,a6
  738.     jsr    _LVOGetMsg(a6)        ; Message vom Port in a0 holen
  739.     cmp.l    #0,d0
  740.     beq    warten            ; 0,dann ligt keine Msg vor
  741.     move.l    d0,a1            ; Zeiger auf die messagestruktur
  742.     move.l    20(a1),d3        ; Klasse der Message
  743.     move.l    #0,d2
  744.     move.w    24(a1),d2        ; Code der Message
  745.     move.l    32(a1),d4        ; Mauskoor
  746.     jsr    _LVOReplyMsg(a6)    ; zurückschicken
  747.  
  748.     move.l    meldung(a5),d0
  749.     cmp.l    #0,d0
  750.     beq    k_meldung
  751.     move.l    spr_farben(a5),a0
  752.     jsr    (a0)
  753.     move.l    #0,meldung(a5)
  754.     
  755.     PEN 4                ; Feld löschen
  756.     move.l    rp(a5),a1
  757.     move.l    #text_x,d0
  758.     move.l    #241,d1
  759.     move.l    #text_xu,d2
  760.     move.l    #249,d3
  761.     jsr    _LVORectFill(a6)
  762.  
  763.     bsr    nr_loeschen        ; alte Angaben immer löschen
  764.  
  765.     bra    maus10_1
  766.  
  767. k_meldung
  768.     move.l    select_down(a5),d0
  769.     cmp.l    #0,d0
  770.     beq    mouse_links
  771.  
  772.     cmp.l    #$10,d3            ; $10 = Mousemove
  773.     bne    mouse_up
  774.     move.l    #6,d5
  775.     bra    nur_zw_teil
  776.  
  777.  
  778. mouse_up
  779.  
  780.     cmp.l    #$8,d3                ; $8 = Mousemoutton( up ?)
  781.     bne    warten
  782.  
  783.     lea    _IntBase(pc),a6        
  784.     move.l    (a6),a6
  785.  
  786.     lea    windowv(pc),a0
  787.     move.l    (a0),a0
  788.     move.l    #$108,d0        ; botton 8 - Pick 100 
  789.     jsr    _LVOModifyIDCMP(a6)
  790.  
  791.     move.l    #0,select_down(a5)
  792.  
  793.     lea    window_b(pc),a0        ; kl Fenster nach hinten
  794.     move.l    (a0),a0
  795.     jsr    _LVOWindowToBack(a6)
  796.  
  797.     move.l    alte_bl_nr(a5),d6
  798.     PEN     0
  799.     bsr    nr_um            ; alte Umrandung weg
  800.     
  801.     bra    warten
  802.  
  803. mouse_links
  804.     move.l    select_left(a5),d0
  805.     cmp.l    #0,d0
  806.     beq    mouse_bottom
  807.  
  808.     cmp.l    #$10,d3            ; $10 = Mousemove
  809.     bne    mouse_up_links
  810.     move.l    #6,d5
  811.     move.l    #3,d2
  812.     VERGLEICHMENU     text_xo,text_yo,text_xu,text_yu 
  813.     cmp.l    #3,d5
  814.     beq    maus0
  815.     bra    warten
  816.  
  817. mouse_up_links
  818.  
  819.     cmp.l    #$8,d3                ; $8 = Mousemoutton( up ?)
  820.     bne    warten
  821.  
  822.     lea    _IntBase(pc),a6        
  823.     move.l    (a6),a6
  824.  
  825.     lea    windowv(pc),a0
  826.     move.l    (a0),a0
  827.     move.l    #$108,d0        ; botton 8 - Pick 100 
  828.     jsr    _LVOModifyIDCMP(a6)
  829.  
  830.     move.l    #0,select_left(a5)
  831.  
  832.     bra    warten
  833.  
  834. mouse_bottom
  835.     cmp.l    #$8,d3            ; $8 = Mousebutton
  836.     bne    menu_pick
  837.     cmp.w    #104,d2            ; Selectdown    
  838.     bne    warten
  839.  
  840.     move.l    #0,d5            
  841.     move.l    #1,d2
  842.     VERGLEICHMENU     text_xo,0,text_xu,10     
  843.     move.l    #2,d2
  844.     VERGLEICHMENU     text_xo,11,text_xu,20
  845.     move.l    #3,d2
  846.     VERGLEICHMENU     text_xo,text_yo,text_xu,text_yu 
  847. nur_zw_teil
  848.     move.l    #4,d2
  849.     VERGLEICHMENU     xl_1,yl_1,xr_1,yr_1
  850.     move.l    #5,d2
  851.     VERGLEICHMENU     xl_2,yl_2,xr_2,yr_2
  852.  
  853.  
  854.     cmp.l    #0,d5
  855.     beq    warten            ; nichts gewählt
  856.     cmp.l    #3,d5
  857.     bne    maus10
  858.  
  859. maus0                    ; großes Feld angeklickt
  860.     move.l    #1,select_left(a5)
  861.     
  862.     lea    _IntBase(pc),a6        
  863.     move.l    (a6),a6
  864.  
  865.     lea    windowv(pc),a0
  866.     move.l    (a0),a0
  867.     move.l    #$118,d0        ; botton 8 - Pick 100 - Move 10    
  868.     jsr    _LVOModifyIDCMP(a6)
  869.  
  870.     and.l    #$ffff,d4        ; y-Maus maskieren
  871.     sub.l    #text_yo,d4
  872.     divu    #10,d4            ; Nr angeklickt in d4
  873.     and.l    #$ffff,d4        ; ohne den Rest
  874.  
  875.     move.l    erste_im_dir(a5),d0
  876.     cmp.l    #0,d0
  877.     beq    nicht_sc1        ; wenn text oben beginnt -> n. scrollen
  878.     cmp.l    #1,d4
  879.     bgt    nicht_sc1        ; sont > zeile 3 angeklickt -> n. scr
  880.  
  881.     bsr    n_oben_scr
  882. wei_scr1
  883.     lea    windowv(pc),a0        ; Hole Adr. MessagePort des Fensters
  884.     move.l    (a0),a0
  885.     move.l    86(a0),a0        ; steht ab 86
  886.     move.l    _SysBase,a6
  887.     jsr    _LVOGetMsg(a6)        ; Message vom Port in a0 holen
  888.     cmp.l    #0,d0
  889.     beq    wei_scr2        ; 0,dann ligt keine Msg vor
  890.     move.l    d0,a1            ; Zeiger auf die messagestruktur
  891.     move.l    20(a1),d3        ; Klasse der Message
  892.     move.l    #0,d2
  893.     move.w    24(a1),d2        ; Code der Message
  894.     move.l    32(a1),d4        ; Mauskoor
  895.     jsr    _LVOReplyMsg(a6)    ; zurückschicken
  896.  
  897.     cmp.l    #$10,d3
  898.     beq    mouse_links
  899.     cmp.l    #$8,d3
  900.     beq    mouse_up_links
  901. wei_scr2
  902.     lea    windowv(pc),a0        ; Hole Adr. MessagePort des Fensters
  903.     move.l    (a0),a0
  904.     move.w    12(a0),d4        ; maus-koor holen
  905.     bra    maus0
  906.  
  907. nicht_sc1
  908.  
  909.     move.l    an_dir(a5),d1
  910.     add.l    #an_zeilen,d0
  911.     cmp.l    d1,d0
  912.     bgt    nicht_sc2        ; wenn text unten sichtbar -> n. scrollen
  913.     cmp.l    #an_zeilen-2,d4
  914.     bls    nicht_sc2        ; sont > zeile 3 angeklickt -> n. scr
  915.  
  916.     bsr    n_unten_scr
  917.     bra    wei_scr1        
  918.     bra    warten     
  919. nicht_sc2
  920.     
  921.     move.l    erste_im_dir(a5),d0
  922.     add.l    d4,d0
  923.     move.l    nr_gewählt(a5),d1
  924.     cmp.l    d0,d1
  925.     beq    warten            ; altes und neues feld identisch !
  926.     move.l    d0,nr_gewählt(a5)
  927.     move.l    text_geo(a5),a4
  928.     mulu    #text_br,d0
  929.     add.l    d0,a4
  930.     
  931.     move.l    off_dir(a4),d0
  932.     cmp.w    #-3,d0
  933.     bne    new_dir
  934.  
  935.     bsr    datei_anzeigen
  936.     bra    warten     
  937.  
  938. new_dir
  939.     cmp.w    #2,d0
  940.     bne    kein_dir
  941.  
  942.     move.l    ak_dir(a5),a0
  943.     move.l    off_zei(a4),a1
  944.     move.l    (a1),ak_dir(a5)        ; neues aktuelles dir eintragen (ist nicht Schatten)
  945.     move.l    (a0),a0            ; -> Schatten
  946.     move.l    ak_dir(a5),a1
  947.     move.l    (a1),a1            ; -> Schatten
  948.     move.l    a0,parent(a1)        ; im Schatten ^auf parent eintragen
  949.     
  950.     move.l    ak_dir(a5),a0
  951.     move.l    ist_gelesen(a0),d0
  952.     cmp.l    #1,d0
  953.     beq    new0
  954.     
  955.     bsr    disk_eingelegt
  956.     bsr    dir_lesen    
  957. new0
  958.     bsr    text_ermitteln    
  959.  
  960.     move.l    an_dir(a5),d0        ; keine datei im Dir
  961.     cmp.l    #0,d0
  962.     beq    new1
  963.  
  964.     bsr    text_ordnen
  965.     bsr    text_ausgeben    
  966. new1
  967.     bra    warten    
  968.  
  969. kein_dir
  970.     bra    warten     
  971.  
  972.  
  973.  
  974. maus10
  975.     cmp.l    #1,d5
  976.     bne    maus20
  977. maus10_1                ; Parent angeklickt
  978.                     ; --------------------
  979.     move.l    ak_dir(a5),a0
  980.     move.l    (a0),a0            ; -> Schatten
  981.     move.l    parent(a0),a0        ; im Schatten ^auf parent holen
  982.     cmpa.l    #0,a0            ; ^ = 0 dann Root
  983.     beq    maus11            ; dann nichts neues ausgeben !
  984.     move.l    (a0),a0            ; -> n Schatten
  985.     move.l    a0,ak_dir(a5)        ; neues aktuelles dir eintragen (ist nicht Schatten)
  986.     
  987.     bsr    pfad_kuerzen
  988.  
  989.     bsr    text_ermitteln    
  990.     bsr    text_ordnen
  991.     bsr    text_ausgeben    
  992. maus11
  993.     bra    warten    
  994.  
  995. maus20
  996.     cmp.l    #2,d5
  997.     bne    maus30
  998.                     ; Dir angeklickt
  999.     bra    warten             ; ---------------
  1000.  
  1001. maus30
  1002.     cmp.l    #4,d5            ; linkes Kästchenfeld angeklickt
  1003.     bne    maus40            ; -------------------------------
  1004.     move.l    #xl_1,a4
  1005.     move.l    #0,head(a5)
  1006.     bsr    block_nr_aus
  1007.     bra    warten
  1008. maus40
  1009.     cmp.l    #5,d5            ; rechtes Kästchenfeld angeklickt
  1010.     bne    maus50            ; -------------------------------
  1011.     move.l    #xl_2,a4
  1012.     move.l    #1,head(a5)
  1013.     bsr    block_nr_aus
  1014.     bra    warten
  1015. maus50                    ; d5 = 6
  1016.     bra    warten
  1017.  
  1018.  
  1019. menu_pick
  1020.     cmp.l    #$100,d3        ; $100=Menupick
  1021.     bne    warten            ; ---------------
  1022.     cmp.w    #$ffff,d2        ; $ffff=Menunull, Kein Menu gewählt
  1023.     beq    warten
  1024.     move.l    d2,d1            ; Menunummer holen
  1025.     and.w    #$001f,d1        ; maskieren mit 11111 = $1f
  1026.     asr.w    #5,d2            ; Itemnr holen
  1027.     and.w    #$003f,d2        ; durch maskieren mit 111111
  1028.                     ; 1.Item = d2 = 0 ! 2.Item: d2=1
  1029.  
  1030.     cmp.w    #0,d1            ; 1. Menu gewählt ?
  1031.     bne    menu10            ; -------------------
  1032. menu1
  1033.     cmp.w    #0,d2            ; df0:
  1034.     bne    menu2
  1035.      move.l    #0,dfi(a5)
  1036.     bra    menu5
  1037. menu2
  1038.     cmp.w    #1,d2            ; df1:
  1039.     bne    menu3
  1040.      move.l    #1,dfi(a5)        
  1041.     bra    menu5
  1042. menu3
  1043.     cmp.w    #2,d2            ; df2:
  1044.     bne    menu4
  1045.      move.l    #2,dfi(a5)
  1046.     bra    menu5
  1047. menu4
  1048.     cmp.w    #3,d2            ; df3:
  1049.     bne    warten
  1050.      move.l    #3,dfi(a5)
  1051.     bra    menu5
  1052. menu5
  1053.  
  1054.     move.l    #0,ak_dir(a5)        ; als kennung wenn fehler in doppelspei
  1055.     bsr    track_auf        ; trackdisk-device öffnen
  1056.     bsr    disk_eingelegt
  1057.     move.l    #880,d0            ; Block Nr in d0
  1058.     bsr    block_read        ; ein block lesen
  1059.     bsr    motor_aus
  1060.     movem.l    d0-d1,-(sp)        ; wegen möglichen Ausspr in doppelspei
  1061.     bsr    doppel_spei        ; Doppelspeicher anfordern
  1062.     lea    8(sp),sp        ; Stack zurück
  1063.     move.l    ueb_ga1(a5),ak_dir(a5)    ; aktuelles dir eintragen (ist nicht Schatten)
  1064.     bsr    block_umsp        ; Block umspeichern
  1065.     bsr    bitmap_holen    
  1066.     move.l    bmflag(a5),d0        ; Bitmap Flag 
  1067.     cmp.l    #0,d0
  1068.     beq    menu3.1
  1069.     bsr    bitmap_ausgeben
  1070. menu3.1
  1071.     bsr    dir_lesen    
  1072.     bsr    text_ermitteln    
  1073.  
  1074.     move.l    an_dir(a5),d0        ; keine datei im Dir
  1075.     cmp.l    #0,d0
  1076.     beq    menu9
  1077.  
  1078.     bsr    text_ordnen
  1079.     bsr    text_ausgeben    
  1080. menu9
  1081.     bra    warten
  1082.  
  1083. menu10
  1084.     cmp.w    #1,d1            ; 2. Menu gewählt ?
  1085.     bne    menu20            ; ---------------------
  1086.  
  1087.     cmp.w    #0,d2            ; Bitmap ?
  1088.     bne    menu12
  1089.     move.l    bmflag(a5),d0        ; Flag ändern
  1090.     bchg    #0,d0
  1091.     move.l    d0,bmflag(a5)
  1092.  
  1093.     bsr    bitmap_ausgeben        ; geänderte Bitmap ausgeben
  1094.     
  1095.     bra    warten
  1096. menu12
  1097.     cmp.w    #1,d2            ; Freier speicher
  1098.     bne    menu13
  1099.     bra    warten
  1100. menu13
  1101.     cmp.w    #2,d2            ; Screen zurück
  1102.     bne    menu14
  1103.  
  1104.     lea    _IntBase(pc),a6
  1105.     move.l    (a6),a6
  1106.     lea    screen(pc),a0
  1107.     move.l    (a0),a0
  1108.     jsr    _LVOScreenToBack(a6)
  1109.  
  1110.     bra    warten
  1111. menu14
  1112.     cmp.w    #3,d2            ; und Coulors = 3 ?
  1113.     bne    warten
  1114.  
  1115.     move.l    spr_farben(a5),a0
  1116.     lea    farben_normal_1,a1
  1117.     cmpa.l    a0,a1
  1118.     bne    menu15
  1119.     lea    farben_normal_2,a0
  1120.     move.l    a0,spr_farben(a5)
  1121.     jsr    (a0)
  1122.     bra    warten
  1123.  
  1124. menu15
  1125.     lea    farben_normal_2,a1
  1126.     cmpa.l    a0,a1
  1127.     bne    menu16
  1128.     lea    farben_normal_3,a0
  1129.     move.l    a0,spr_farben(a5)
  1130.     jsr    (a0)
  1131.     bra    warten
  1132. menu16
  1133.     lea    farben_normal_3,a1
  1134.     cmpa.l    a0,a1
  1135.     bne    menu17
  1136.     lea    farben_normal_4,a0
  1137.     move.l    a0,spr_farben(a5)
  1138.     jsr    (a0)
  1139.     bra    warten
  1140. menu17
  1141.     lea    farben_normal_4,a1
  1142.     cmpa.l    a0,a1
  1143.     bne    menu18
  1144.     lea    farben_normal_1,a0
  1145.     move.l    a0,spr_farben(a5)
  1146.     jsr    (a0)
  1147.     bra    warten
  1148. menu18
  1149.     bra    warten
  1150.  
  1151.  
  1152. menu20
  1153.     cmp.w    #2,d1            ; 3. Menu gewählt ?
  1154.     bne    warten            ; --------------------
  1155.  
  1156.     cmp.w    #0,d2            ; Info (engl) ?
  1157.     bne    menu22
  1158.  
  1159.     lea    _IntBase(pc),a6        
  1160.     move.l    (a6),a6
  1161.     lea    windowv(pc),a0
  1162.     move.l    (a0),a0
  1163.     move.l    #$0,d0            ; keine Meldung
  1164.     jsr    _LVOModifyIDCMP(a6)
  1165.  
  1166.     bsr    info_engl
  1167.  
  1168.     lea    _IntBase(pc),a6        
  1169.     move.l    (a6),a6
  1170.     lea    windowv(pc),a0
  1171.     move.l    (a0),a0
  1172.     move.l    #$108,d0        ; botton 8 - Pick 100 
  1173.     jsr    _LVOModifyIDCMP(a6)
  1174.  
  1175.     bra    warten
  1176. menu22
  1177.     cmp.w    #1,d2            ; und Quit = 1 ?
  1178.     bne    warten
  1179.  
  1180.     bra    menuende
  1181.  
  1182. menuende
  1183.  
  1184.     bsr    block_sp_frei        ; gibt alle geholten Sp-Blöcke Frei
  1185.  
  1186.     move.l    _SysBase,a6
  1187.     
  1188.     move.l    #1760*2,d0        ; speicher für alle gezeichneten Balken frei
  1189.     move.l    all_num(a5),a1
  1190.     jsr    _LVOFreeMem(a6)     
  1191. all_num_0
  1192.  
  1193.  
  1194.     move.l    #spei_grö_text,d0
  1195.     move.l    text_geo(a5),a1
  1196.     jsr    _LVOFreeMem(a6)     ; Speicher fuer Text-Verwaltung zurück
  1197. text_geo_0
  1198.  
  1199.     move.l    #spei_grö_text,d0
  1200.     move.l    text_zw(a5),a1
  1201.     jsr    _LVOFreeMem(a6)     ; Speicher fuer Text-Verwaltung zurück
  1202. text_zw_0
  1203.  
  1204.     move.l    #spei_grö_text,d0
  1205.     move.l    text_roh(a5),a1
  1206.     jsr    _LVOFreeMem(a6)     ; Speicher fuer Text-Verwaltung zurück
  1207. text_roh_0
  1208.     
  1209.  
  1210.     move.l    #spei_grö_verw,d0
  1211.     move.l    spei_verw(a5),a1
  1212.     jsr    _LVOFreeMem(a6)     ; Speicher fuer Sp-Verwaltung zurück
  1213. spei_0
  1214.  
  1215.     move.l    #512,d0
  1216.     move.l    bl_adr(a5),a1
  1217.     jsr    _LVOFreeMem(a6)     ; Speicher fuer einen block zurück
  1218. bl_0
  1219.         
  1220.     lea    _IntBase(pc),a6        
  1221.     move.l    (a6),a6
  1222.     lea    windowv(pc),a0
  1223.     move.l    (a0),a0
  1224.     jsr    _LVOClearMenuStrip(a6)    ; Menu entfernen
  1225.  
  1226.  
  1227.  
  1228.     move.l    tr_open(a5),d0
  1229.     cmp.l    #0,d0
  1230.     beq    nie_auf            ; tr war nie auf
  1231.  
  1232.     move.l    _SysBase,a6
  1233.     lea    readrepl,a1
  1234.     jsr    _LVORemPort(a6)        ; MsgPort entfernen
  1235.  
  1236.     lea    diskio,a1
  1237.     jsr    _LVOCloseDevice(a6)    ; Device schließen
  1238. nie_auf
  1239.     lea    _IntBase(pc),a6        ; Window Block schließen        
  1240.     move.l    (a6),a6
  1241.     lea    window_b(pc),a0        
  1242.     move.l    (a0),a0
  1243.     jsr    _LVOCloseWindow(a6)
  1244. window_b0    
  1245.     lea    _IntBase(pc),a6        ; Window und Screen schließen        
  1246.     move.l    (a6),a6
  1247.     lea    windowv(pc),a0        
  1248.     move.l    (a0),a0
  1249.     jsr    _LVOCloseWindow(a6)
  1250. window_0                ; dann noch IntBase in a6
  1251.     lea    screen(pc),a0
  1252.     move.l    (a0),a0
  1253.     jsr    _LVOCloseScreen(a6)
  1254. screen_0    
  1255.  
  1256.     LIBSCHL        _GfxBase
  1257.     LIBSCHL        _IntBase
  1258.     LIBSCHL        _DosBase
  1259.  
  1260. fini    rts
  1261. *---------------------------------------------------------------------------------
  1262. farben_normal_1
  1263.     
  1264.     FARBE 0,0,0,0            ; Farbe schwarz
  1265.     FARBE 1,15,15,0            ; Farbe Bitmapumrandung(gelb)
  1266.     FARBE 2,5,5,0            ; Farbe unbelegte Bitmap(dunkelgelb)
  1267.     FARBE 3,10,10,0            ; Farbe belegte Bitmap(mittelgelb)
  1268.  
  1269.     FARBE 4,7,7,7            ; Farbe linkes "Fenster"
  1270.     FARBE 5,15,0,0            ; Farbe Umrandung dazu (rot)
  1271.     FARBE 6,0,0,15            ; Farbe Directory (blau)
  1272.  
  1273.     FARBE 7,12,9,0            ; Farbe Directory im text (braun)
  1274.     FARBE 8,0,15,0            ; Farbe Kasten angeklickt (grün)
  1275.     FARBE 9,12,0,15            ; Farbe Nr angeklickt (violett)
  1276.     FARBE 10,0,15,15        ; Farbe Nr angeklickt header (violett)
  1277.  
  1278.  
  1279.     FARBE 12,15,12,0        ; Farbe Umrandung (orange)
  1280.     FARBE 13,7,12,15        ; Farbe Hintergrund Block-W ()
  1281.     FARBE 14,15,0,15        ; Farbe weiß
  1282.     FARBE 15,15,15,15        ; Farbe Menu (blau)
  1283.  
  1284.     rts
  1285. *---------------------------------------------------------------------------------
  1286. farben_normal_2
  1287.     
  1288.     FARBE 0,0,0,10            ; Farbe schwarz
  1289.     FARBE 1,15,15,0            ; Farbe Bitmapumrandung(gelb)
  1290.     FARBE 2,5,5,0            ; Farbe unbelegte Bitmap(dunkelgelb)
  1291.     FARBE 3,10,10,0            ; Farbe belegte Bitmap(mittelgelb)
  1292.  
  1293.     FARBE 4,11,15,15        ; Farbe linkes "Fenster"
  1294.     FARBE 5,15,0,0            ; Farbe Umrandung dazu (rot)
  1295.     FARBE 6,15,4,0            ; Farbe Directory (blau)
  1296.  
  1297.     FARBE 7,12,9,0            ; Farbe Directory im text (braun)
  1298.     FARBE 8,0,0,0            ; Farbe Kasten angeklickt (grün)
  1299.     FARBE 9,0,15,0            ; Farbe Nr angeklickt (violett)
  1300.     FARBE 10,15,8,8            ; Farbe Nr angeklickt header (violett)
  1301.  
  1302.  
  1303.     FARBE 12,7,7,7            ; Farbe Umrandung (orange)
  1304.     FARBE 13,7,7,7            ; Farbe Hintergrund Block-W ()
  1305.     FARBE 14,15,0,15        ; Farbe weiß
  1306.     FARBE 15,15,15,15        ; Farbe Menu (blau)
  1307.  
  1308.     rts
  1309.  
  1310. *---------------------------------------------------------------------------------
  1311. farben_normal_3
  1312.     
  1313.     FARBE 0,0,0,0            ; Farbe schwarz
  1314.     FARBE 1,15,15,0            ; Farbe Bitmapumrandung(gelb)
  1315.     FARBE 2,0,15,15            ; Farbe unbelegte Bitmap(dunkelgelb)
  1316.     FARBE 3,0,10,10            ; Farbe belegte Bitmap(mittelgelb)
  1317.  
  1318.     FARBE 4,10,15,10        ; Farbe linkes "Fenster"
  1319.     FARBE 5,15,0,0            ; Farbe Umrandung dazu (rot)
  1320.     FARBE 6,6,0,15            ; Farbe Directory (blau)
  1321.  
  1322.     FARBE 7,12,0,9            ; Farbe Directory im text (braun)
  1323.     FARBE 8,0,0,15            ; Farbe Kasten angeklickt (grün)
  1324.     FARBE 9,12,9,0            ; Farbe Nr angeklickt (violett)
  1325.     FARBE 10,8,5,0            ; Farbe Nr angeklickt header (violett)
  1326.  
  1327.  
  1328.     FARBE 12,15,12,0        ; Farbe Umrandung (orange)
  1329.     FARBE 13,15,7,0            ; Farbe Hintergrund Block-W ()
  1330.     FARBE 14,15,0,15        ; Farbe weiß
  1331.     FARBE 15,15,15,15        ; Farbe Menu (blau)
  1332.  
  1333.     rts
  1334. *---------------------------------------------------------------------------------
  1335. farben_normal_4
  1336.     
  1337.     FARBE 0,0,0,0            ; Farbe schwarz
  1338.     FARBE 1,0,15,15            ; Farbe Bitmapumrandung(gelb)
  1339.     FARBE 2,7,15,7            ; Farbe unbelegte Bitmap(dunkelgelb)
  1340.     FARBE 3,5,5,15            ; Farbe belegte Bitmap(mittelgelb)
  1341.  
  1342.     FARBE 4,15,12,5            ; Farbe linkes "Fenster"
  1343.     FARBE 5,15,0,0            ; Farbe Umrandung dazu (rot)
  1344.     FARBE 6,6,0,8            ; Farbe Directory (blau)
  1345.  
  1346.     FARBE 7,12,0,9            ; Farbe Directory im text (braun)
  1347.     FARBE 8,0,0,15            ; Farbe Kasten angeklickt (grün)
  1348.     FARBE 9,12,9,0            ; Farbe Nr angeklickt (violett)
  1349.     FARBE 10,8,5,0            ; Farbe Nr angeklickt header (violett)
  1350.  
  1351.  
  1352.     FARBE 12,15,12,0        ; Farbe Umrandung (orange)
  1353.     FARBE 13,15,7,0            ; Farbe Hintergrund Block-W ()
  1354.     FARBE 14,15,0,15        ; Farbe weiß
  1355.     FARBE 15,15,15,15        ; Farbe Menu (blau)
  1356.  
  1357.     rts
  1358.  
  1359. *---------------------------------------------------------------------------------
  1360. farben_schwarz
  1361.     
  1362.     FARBE 0,0,0,0            ; Farbe schwarz
  1363.     FARBE 1,0,0,0            ; Farbe Bitmapumrandung(gelb)
  1364.     FARBE 2,0,0,0            ; Farbe unbelegte Bitmap(dunkelgelb)
  1365.     FARBE 3,0,0,0            ; Farbe belegte Bitmap(mittelgelb)
  1366.  
  1367.     FARBE 4,0,0,0            ; Farbe linkes "Fenster"
  1368.     FARBE 5,0,0,0            ; Farbe Umrandung dazu (rot)
  1369.     FARBE 6,0,0,0            ; Farbe Directory (blau)
  1370.  
  1371.     FARBE 7,0,0,0            ; Farbe Directory im text (braun)
  1372.     FARBE 8,0,0,0            ; Farbe Kasten angeklickt (grün)
  1373.     FARBE 9,0,0,0            ; Farbe Nr angeklickt (violett)
  1374.     FARBE 10,0,0,0            ; Farbe Nr angeklickt header (violett)
  1375.  
  1376.     FARBE 11,0,0,0            ; Farbe Meldungsschrift (rot)
  1377.  
  1378.     FARBE 12,0,0,0            ; Farbe Directory (blau)
  1379.     FARBE 13,0,0,0            ; Farbe    Directory (blau)
  1380.     FARBE 14,0,0,0            ; Farbe Directory (blau)
  1381.     FARBE 15,0,0,0            ; Farbe Menu (blau)
  1382.  
  1383.     rts
  1384. *---------------------------------------------------------------------------------
  1385. farben_meldung
  1386.     
  1387.     FARBE 8,0,15,0            ; Farbe Kasten angeklickt (grün)
  1388.  
  1389.     FARBE 11,15,0,15        ; Farbe Meldungsschrift (rot)
  1390.  
  1391.     rts
  1392.  
  1393.  
  1394.  
  1395. * ------------- trackdisk-device öffnen--------
  1396. track_auf
  1397.  
  1398.     move.l    tr_open(a5),d0
  1399.     cmp.l    #0,d0
  1400.     beq    tr_ist_zu
  1401.  
  1402.     PEN 2
  1403.     bsr    raster            ; löscht Kästchenanziege
  1404.     bsr    linke_an_lö        ; löscht linke Seite
  1405.  
  1406.     move.l    text_geo(a5),a1        ; geo löschen
  1407.     move.l    #spei_grö_text,d0    
  1408.     sub.l    #1,d0
  1409. geo_l
  1410.     move.b    #0,(a1)+        ; löschen
  1411.     dbra    d0,geo_l
  1412.  
  1413.     move.l    _SysBase,a6
  1414.     lea    readrepl,a1
  1415.     jsr    _LVORemPort(a6)        ; MsgPort entfernen
  1416.  
  1417.     lea    diskio,a1
  1418.     jsr    _LVOCloseDevice(a6)    ; Device schließen
  1419.  
  1420.     bsr    block_sp_frei        ; gibt alle geholten Sp-Blöcke Frei
  1421.  
  1422.     move.l    #0,gr_pfad(a5)        ; Pfad-größe = 0
  1423.     lea    pfad_name(pc),a0
  1424.     move.l    #9,d0
  1425. pfad_leer
  1426.     move.l    #'    ',(a0)+
  1427.     dbra    d0,pfad_leer
  1428.     
  1429. tr_ist_zu
  1430.     move.l    #1,tr_open(a5)        ; Kennung setzen
  1431.     move.l    _SysBase,a6
  1432.     sub.l    a1,a1
  1433.     jsr    _LVOFindTask(a6)    ; eigener task
  1434.     move.l    d0,readrepl+$10        ; eigner task als empfänger in MsgPort
  1435.  
  1436.     lea    readrepl,a1
  1437.     jsr    _LVOAddPort(a6)        ; neuer Port
  1438.  
  1439.     lea    diskio,a1        ; I/O Struktur
  1440.     move.l    dfi(a5),d0        ; dfi
  1441.     clr.l    d1            ; keine flags
  1442.     lea    trdevice,a0        ; Zeiger auf Devicename in a0
  1443.     jsr    _LVOOpenDevice(a6)    ; und Device öffnen
  1444.  
  1445.  
  1446.     move.l    all_num(a5),a0        ; NummernSpeicher löschen
  1447.     move.l    #1759,d0
  1448. tr_nr_loe
  1449.     move.w    #0,(a0)+
  1450.     dbra    d0,tr_nr_loe
  1451.  
  1452.     move.l    all_num(a5),lfd_num(a5)        ;  auf Anfang setzen
  1453.  
  1454.     rts
  1455. *--------------------------------------------------------------------------    
  1456. disk_eingelegt                ; Block-Nr 0 ...1759 in d0 !!
  1457.  
  1458.     move.l    _SysBase,a6
  1459.  
  1460.     lea    diskio,a1    
  1461.     move.l    #readrepl,14(a1)    ; Zeiger auf Repl-Port
  1462.     move.w    #14,28(a1)        ; 14=TD_Changestate
  1463.     move.l    bl_adr(a5),40(a1)    ; puffer
  1464.     move.l    #0,36(a1)        ; io_length 
  1465.     move.l    #0,44(a1)        ; IO_offset 0 ... 
  1466.     jsr    _LVODoIo(a6)        ; lesen
  1467.  
  1468.     lea    diskio,a1    
  1469.     move.l    32(a1),d0
  1470.     cmp.l    #0,d0
  1471.     bne    no_disk
  1472.  
  1473.     rts
  1474. no_disk
  1475.     move.l    #1,meldung(a5)        ; Meldungsfeld auf 1 setzen
  1476.     bsr    farben_schwarz
  1477.     bsr    farben_meldung
  1478.     bsr    neue_meldung
  1479.  
  1480.     lea    text_me1(pc),a0
  1481.     move.l    #15,d0
  1482.     move.l    rp(a5),a1
  1483.     move.l    dfi(a5),d1        ; i von dfi  !
  1484.     add.l    #48,d1
  1485.     move.b    d1,13(a0)
  1486.     jsr    _LVOText(a6)
  1487.  
  1488.     move.l    (sp)+,d0        ; Stack zurücksetzen
  1489.     bra    warten
  1490.  
  1491. *--------------------------------------------------------------------------    
  1492. neue_meldung
  1493.  
  1494.     lea    _GfxBase(pc),a6
  1495.     move.l    (a6),a6
  1496.  
  1497.     PEN    4            ; Textfenster löschen
  1498.  
  1499.     move.l    rp(a5),a1        ; text fgewähltes feld löschen
  1500.     move.l    #text_x,d0
  1501.     move.l    #241,d1
  1502.     move.l    #text_xu,d2
  1503.     move.l    #249,d3
  1504.     jsr    _LVORectFill(a6)
  1505.  
  1506.     PEN 11,4            ; Meldung schreiben
  1507.  
  1508.     move.l    rp(a5),a1
  1509.     move.l    #text_x,d0
  1510.     move.l    #248,d1
  1511.     jsr    _LVOMove(a6)
  1512.  
  1513.     rts
  1514.  
  1515. *--------------------------------------------------------------------------    
  1516. block_read                ; Block-Nr 0 ...1759 in d0 !!
  1517.  
  1518.     move.l    _SysBase,a6
  1519.  
  1520.     lea    diskio,a1    
  1521.     move.l    #readrepl,14(a1)    ; Zeiger auf Repl-Port
  1522.     move.w    #$2,28(a1)        ; $2=Read
  1523.     move.l    bl_adr(a5),40(a1)    ; puffer
  1524.     move.l    #1*512,36(a1)        ; io_length 
  1525.     mulu    #512,d0
  1526.     move.l    d0,44(a1)        ; IO_offset 0 ... 
  1527.     jsr    _LVODoIo(a6)        ; lesen
  1528.  
  1529.     rts
  1530. *--------------------------------------------------------------------------    
  1531. motor_aus
  1532.     move.l    _SysBase,a6
  1533.  
  1534.     lea    diskio,a1
  1535.     move.w    #9,28(a1)        ; Motor
  1536.     move.l    #0,36(a1)        ; länge 0
  1537.     jsr    _LVODoIo(a6)
  1538.  
  1539.     rts
  1540.  
  1541. *--------------------------------------------------------------------------    
  1542. doppel_spei
  1543.     
  1544.     movem.l    d2/a2,-(sp)
  1545.  
  1546.     move.l    _SysBase,a6
  1547.     move.l    #1,d1
  1548.     jsr    _LVOAvailMem(a6)
  1549.     cmp.l    #10000,d0
  1550.     blt    do_e            ; mindestens 10 K,damit System noch Nachrichten
  1551.  
  1552.     move.l    #spei_grö,d0
  1553.     move.l    #$10000,d1        ; clear
  1554.     jsr    _LVOAllocMem(a6)    ; Speicher fuer Speicherverwaltung
  1555.     cmp.l    #0,d0
  1556.     beq    do_e
  1557.     move.l    spei_verw(a5),a0
  1558.     move.l    spei_off(a5),d1
  1559.     move.l    d0,0(a0,d1)
  1560.     move.l    d0,d2            ; retten
  1561.     add.l    #4,spei_off(a5)
  1562.     move.l    d0,ueb_ga1(a5)
  1563.     
  1564.     
  1565.     move.l    #spei_grö,d0
  1566.     move.l    #$10000,d1        ; clear
  1567.     jsr    _LVOAllocMem(a6)    ; Speicher fuer Speicherverwaltung
  1568.     cmp.l    #0,d0
  1569.     beq    do_e
  1570.     move.l    spei_verw(a5),a0
  1571.     move.l    spei_off(a5),d1
  1572.     move.l    d0,0(a0,d1)
  1573.     add.l    #4,spei_off(a5)
  1574.     move.l    d0,ueb_ga2(a5)
  1575.  
  1576.     move.l    d0,a0            ; gegenseitig verketten
  1577.     move.l    d2,a2
  1578.     move.l    d0,(a2)
  1579.     move.l    d2,(a0)
  1580.  
  1581.     movem.l    (sp)+,d2/a2
  1582.     rts
  1583. do_e
  1584.     movem.l    (sp)+,d2/a2
  1585.  
  1586.     move.l    #1,meldung(a5)        ; Meldungsfeld auf 1 setzen
  1587.     bsr    farben_schwarz
  1588.     bsr    farben_meldung
  1589.     bsr    neue_meldung
  1590.  
  1591.     lea    text_me2(pc),a0
  1592.     move.l    #17,d0
  1593.     move.l    rp(a5),a1
  1594.     jsr    _LVOText(a6)
  1595.  
  1596.     bsr    motor_aus
  1597.  
  1598.     lea    _IntBase(pc),a6        
  1599.     move.l    (a6),a6
  1600.  
  1601.     lea    windowv(pc),a0
  1602.     move.l    (a0),a0
  1603.     move.l    #$108,d0        ; botton 8 - Pick 100 
  1604.     jsr    _LVOModifyIDCMP(a6)
  1605.  
  1606.     move.l    ak_dir(a5),a0        ; Kennung auf nicht gelesen setzen
  1607.     move.l    #0,ist_gelesen(a0)    ; kennung = nicht gelesen !
  1608.  
  1609.     lea    12(sp),sp        ; Stack zurück
  1610.     bra    warten
  1611.  
  1612. *--------------------------------------------------------------------------    
  1613. ein_spei
  1614.     
  1615.     move.l    _SysBase,a6
  1616.     
  1617.     move.l    #spei_grö,d0
  1618.     move.l    #$10000,d1        ; clear
  1619.     jsr    _LVOAllocMem(a6)    ; Speicher fuer Speicherverwaltung
  1620.     cmp.l    #0,d0
  1621.     beq    ein_fe
  1622.     move.l    spei_verw(a5),a0
  1623.     move.l    spei_off(a5),d1
  1624.     move.l    d0,0(a0,d1)
  1625.     add.l    #4,spei_off(a5)
  1626.     move.l    d0,ueb_ga1(a5)
  1627.     move.l    #0,ueb_ga2(a5)
  1628.     
  1629.     rts
  1630.  
  1631. ein_fe
  1632.     lea    -12(sp),sp        ; Stack runterzählen
  1633.     bra    do_e
  1634.         
  1635. *--------------------------------------------------------------------------    
  1636. block_sp_frei                ; gibt die ganzen angesammelten Sp frei
  1637.  
  1638.     move.l    _SysBase,a6
  1639.  
  1640.     move.l    spei_off(a5),d6
  1641.     cmp.l    #0,d6
  1642.     beq    kein_spei
  1643.     asr.l    #2,d6            ; offset durch 4
  1644.     sub.l    #1,d6    
  1645.     move.l    spei_verw(a5),a4
  1646. spei_frei
  1647.     move.l    #spei_grö,d0
  1648.     move.l    (a4)+,a1
  1649.     jsr    _LVOFreeMem(a6)     ; Speicher fuer einen block zurück
  1650.     dbra    d6,spei_frei
  1651.     
  1652. kein_spei
  1653.     move.l    #0,spei_off(a5)        ; Offset zurücksetzen
  1654.     move.l    #spei_grö_verw,d0    ; Verwaltung mit Nullen füllen
  1655.     sub.l    #1,d0
  1656.     move.l    spei_verw(a5),a0
  1657. mit_nullen
  1658.     move.b    #0,(a0)+
  1659.     dbra    d0,mit_nullen
  1660.     
  1661.     rts
  1662. *--------------------------------------------------------------------------    
  1663. block_umsp
  1664.     
  1665.     move.l    ueb_ga1(a5),a1
  1666.     adda.l    #off,a1
  1667.     move.l    bl_adr(a5),a0
  1668.     
  1669.     move.l    #127,d0
  1670. bl_um1
  1671.     move.l    (a0)+,(a1)+
  1672.     dbra    d0,bl_um1
  1673.  
  1674.     rts
  1675.     
  1676.  
  1677. *--------------------------------------------------------------------------    
  1678. bitmap_holen    
  1679.  
  1680.     move.l    ueb_ga1(a5),a4        ; Orginal
  1681.     lea    79*4(a4),a4
  1682.     adda.l    #off,a4            ; und anfangsoffset
  1683.     move.l    ueb_ga2(a5),a3        ; Schatten
  1684.     lea    79*4(a3),a3
  1685.     adda.l    #off,a3            ; und anfangsoffset
  1686.     move.l    (a4)+,d0        ; Block Nr in d0
  1687.     bsr    block_read        ; ein block lesen
  1688.     bsr    ein_spei        ; Einfachspeicher anfordern
  1689.     bsr    block_umsp        ; Block umspeichern
  1690.     move.l    ueb_ga1(a5),(a3)+    ; verketten
  1691.  
  1692. bit_wei
  1693.     move.l    (a4)+,d0        ; Block Nr in d0
  1694.     cmp.l    #0,d0
  1695.     beq    bit_ende
  1696.     bsr    block_read        ; ein block lesen
  1697.     bsr    ein_spei        ; Einfachspeicher anfordern
  1698.     bsr    block_umsp        ; Block umspeichern
  1699.     move.l    ueb_ga1(a5),(a3)+    ; verketten
  1700.     bra    bit_wei
  1701. bit_ende
  1702.     bsr    motor_aus
  1703.     rts
  1704. *--------------------------------------------------------------------------    
  1705. bitmap_ausgeben
  1706.  
  1707.     PEN 3                ; liefert auch gfxbase in a6
  1708.  
  1709.     move.l    bmflag(a5),d0        ; Bitmap Flag 
  1710.     cmp.l    #1,d0
  1711.     beq    bit_aus0
  1712.  
  1713.     PEN 2
  1714. bit_aus0
  1715.     move.l    spei_verw(a5),a4    ; in algemeiner Form holen
  1716.     move.l    4(a4),a4        ; Schattenblock von Root ist 2. Block
  1717.     lea    79*4(a4),a4        ; Adresse auf Sp mit Bitmap
  1718.     adda.l    #off,a4            ; und anfangsoffset
  1719.     move.l    #1,d6            ; da erstes Bit für Block 2 steht
  1720. bit_aus1
  1721.     move.l    (a4)+,a3
  1722.     cmpa.l    #0,a3
  1723.     beq    bit_aus_e
  1724.     
  1725.     lea    4(a3),a3        ; ab da BMap
  1726.     adda.l    #off,a3            ; und anfangsoffset
  1727. bit_aus2
  1728.     move.l    (a3)+,d5
  1729.     move.l    #31,d4
  1730. bit_aus3
  1731.     add.l    #1,d6
  1732.     cmp.l    #1760,d6
  1733.     beq    bit_aus_e
  1734.     btst.b    #0,d5
  1735.     bne    bit_aus5        ; wenn gesetzt,dann frei u nicht markieren
  1736.     bsr    nr_zei
  1737. bit_aus5        
  1738.     move.l    #1,d0
  1739.     ror.l    d0,d5
  1740.     dbra    d4,bit_aus3
  1741.     bra    bit_aus2
  1742.  
  1743. bit_aus_e
  1744.  
  1745.     PEN 4                ; Feld mit angezeigtem Dateinamen löschen
  1746.     move.l    rp(a5),a1
  1747.     move.l    #text_x,d0
  1748.     move.l    #241,d1
  1749.     move.l    #text_xu,d2
  1750.     move.l    #249,d3
  1751.     jsr    _LVORectFill(a6)
  1752.  
  1753.     rts
  1754. *--------------------------------------------------------------------------    
  1755. nr_loeschen
  1756.  
  1757.     PEN 3                ; liefert auch gfxbase in a6
  1758.  
  1759.     move.l    bmflag(a5),d0        ; Bitmap Flag 
  1760.     cmp.l    #1,d0
  1761.     beq    nr_loe0
  1762.  
  1763.     PEN 2
  1764. nr_loe0
  1765.     move.l    all_num(a5),a4        ; ^ auf Speicher aller gezeichneter Nummern
  1766. nr_loe1
  1767.     clr.l    d6
  1768.     move.w    (a4)+,d6
  1769.     cmp.l    #0,d6
  1770.     beq    nr_loe2
  1771.     move.w    #0,-2(a4)        ; und nr löschen
  1772.     bsr    nr_zei
  1773.     bra    nr_loe1
  1774. nr_loe2
  1775.     move.l    all_num(a5),lfd_num(a5)        ;  auf Anfang setzen
  1776.  
  1777.  
  1778.     rts
  1779. *--------------------------------------------------------------------------    
  1780. nr_zei                    ; Nr übergabe in d6 ! ! 
  1781.     movem.l    a2/a3,-(sp)
  1782.  
  1783.     move.l    d6,d0
  1784.     divu    #22,d0
  1785.     move.l    d0,d1
  1786.     ror.l    #8,d0
  1787.     ror.l    #8,d0
  1788.     and.l    #$ff,d0            ; Nachkommateil 0 ... 21
  1789.     and.l    #$ff,d1            ; Vorkommateil 0 ... 79  Sektor
  1790.  
  1791.     move.l    xl1(a5),a2        ; Horizontalen x Wert  berechnen
  1792.     cmp.l    #10,d0
  1793.     ble    nr_zei1
  1794.     move.l    xl2(a5),a2
  1795.     sub.l    #11,d0
  1796. nr_zei1
  1797.     adda.l    #10,a2
  1798.     cmp.l    #4,d0
  1799.     ble    nr_zei2
  1800.     add.l    #8,a2
  1801. nr_zei2
  1802.     mulu     #12,d0
  1803.     adda.l    d0,a2
  1804.  
  1805.  
  1806.     move.l    yl1(a5),a3        ; Vertikalen y Wert  berechnen
  1807.     adda.l    #5,a3
  1808.     cmp.l    #39,d1
  1809.     ble    nr_zei5
  1810.     adda.l    #3,a3
  1811. nr_zei5
  1812.     mulu     #3,d1
  1813.     adda.l    d1,a3
  1814.  
  1815.     bsr    balken
  1816.  
  1817.     movem.l    (sp)+,a2/a3
  1818.  
  1819.     rts
  1820. *--------------------------------------------------------------------------    
  1821. frei_ermitteln
  1822.     
  1823.     move.l    _SysBase,a6
  1824.     move.l    #1,d1
  1825.     jsr    _LVOAvailMem(a6)
  1826.     move.l    d0,d2
  1827.     bsr    decl
  1828.     lea    buffer(pc),a0
  1829.     lea    mtext220(pc),a1
  1830.     move.l    (a0)+,(a1)+
  1831.     move.l    (a0)+,(a1)+
  1832.     move.b    (a0)+,(a1)+
  1833.  
  1834.     rts
  1835.  
  1836. *--------------------------------------------------------------------------    
  1837. dir_lesen    
  1838.  
  1839.     lea    _IntBase(pc),a6        
  1840.     move.l    (a6),a6
  1841.  
  1842.     lea    windowv(pc),a0
  1843.     move.l    (a0),a0
  1844.     move.l    #$0,d0            ; keine meldung
  1845.     jsr    _LVOModifyIDCMP(a6)
  1846.  
  1847.     move.l    ak_dir(a5),ueb_ga1(a5)
  1848.     move.l    ak_dir(a5),a0
  1849.     move.l    #1,ist_gelesen(a0)    ; kennung ,das dir bereits gelesen
  1850.  
  1851. dir1
  1852.     move.l    ueb_ga1(a5),a4        ; zuerst Dir vervollständigen
  1853.     move.l    a4,a3            ; retten
  1854.     lea    extension(a4),a4
  1855.     move.l    (a4),d0            ; Block Nr in d0
  1856.     cmp.l    #0,d0
  1857.     beq    dir2
  1858.     move.l    a1,-(sp)        ; nur wegen Aussprung aus doppelsp
  1859.     bsr    block_read        ; ein block lesen
  1860.     bsr    doppel_spei        ; Doppelspeicher anfordern
  1861.     bsr    block_umsp        ; Block umspeichern
  1862.     move.l    (sp)+,a1
  1863.     move.l    (a3),a3            ; aus gegens. alter verkettung in schatten
  1864.     lea    extension(a3),a3
  1865.     move.l    ueb_ga2(a5),(a3)    ; im Schatten verketten
  1866.     bra    dir1
  1867. dir2
  1868.  
  1869.     move.l    ak_dir(a5),a4
  1870. dir3
  1871.     move.l    a4,a3
  1872.     move.l    (a4),a2            ; Schatten
  1873.  
  1874.     lea    hasch_v(a3),a3
  1875.     lea    hasch_v(a2),a2
  1876.     move.l    #5,d5            ; Zähler für Hasch 6...77
  1877.  
  1878. dir5
  1879.     move.l    (a2)+,d0        ; nur erhöhen
  1880.     move.l    (a3)+,d0
  1881.     add.l    #1,d5
  1882.     cmp.l    #78,d5
  1883.     beq    dir20            ; dann alle bis 78 durch
  1884.  
  1885.     cmp.l    #0,d0
  1886.     beq    dir10            ; kein eintrag
  1887.     lea    -4(a2),a1        ; Adr,wohin ^auf Sp eingetragen wird
  1888.     move.l    #1,d6            ; d6 ist Kennung ob weitere Blöcke
  1889.     move.l    #0,n_chain_n(a5)    ; Zeiger auf next-chain nicht-schatten
  1890.     move.l    #0,n_chain_s(a5)    ;           "            Schatten
  1891. dir7
  1892.     cmp.l    #0,d6
  1893.     beq    dir9
  1894.  
  1895.     move.l    a1,-(sp)
  1896.     bsr    block_read        ; ein block lesen
  1897.     bsr    doppel_spei        ; Doppelspeicher anfordern
  1898.     bsr    block_umsp        ; Block umspeichern
  1899.     move.l    (sp)+,a1
  1900.     move.l    ueb_ga1(a5),a0        ; chain ?
  1901.     move.l    chain(a0),d0
  1902.     cmp.l    #0,d0
  1903.     beq    dir7_1
  1904.     move.l    ueb_ga1(a5),n_chain_n(a5)    ; Zeiger auf Speicher merken
  1905.     move.l    ueb_ga2(a5),n_chain_s(a5)    ; Zeiger auf Speicher merken
  1906. dir7_1    
  1907.     move.l    ueb_ga2(a5),(a1)        ; verketten
  1908.     move.l    #0,d6
  1909.     move.l    ueb_ga1(a5),a0
  1910.     lea    extension(a0),a0
  1911.     move.l    (a0),d0
  1912.     cmp.l    #0,d0            ; nächst Extension (wird auch in bl-read gebracht)
  1913.     beq    dir8
  1914.     move.l    ueb_ga1(a5),a0
  1915.     lea    sec_type(a0),a0
  1916.     move.l    (a0),d1
  1917.     cmp.w    #-3,d1            ; Section typ( -3 = File header)
  1918.     bne    dir8
  1919.     move.l    #1,d6
  1920.     move.l    ueb_ga2(a5),a0        ; a1 auf extension setzen
  1921.     lea    extension(a0),a1
  1922. dir8    
  1923.     bra    dir7
  1924. dir9                    ; nun alle chain holen (Anhang _c  sonst fast wie oben)
  1925.  
  1926. dir6_c
  1927.     move.l    n_chain_s(a5),a1
  1928.     lea    chain(a1),a1        ; 1.wird in Cain verkettet,danach Extension
  1929.  
  1930.     move.l    #1,d6            ; d6 ist Kennung ob weitere Blöcke
  1931.     move.l    n_chain_n(a5),a0    ; Zeiger auf next-chain nicht-schatten
  1932.     cmpa.l    #0,a0
  1933.     beq    dir10_c            ; Aussprung,wenn ^auf Spei wo Chain >< 0 selbst <> 0
  1934.     move.l    chain(a0),d0        ; Block-Nr holen
  1935.     move.l    #0,n_chain_n(a5)    ; wieder 0 eintragen
  1936. dir7_c
  1937.     cmp.l    #0,d6
  1938.     beq    dir9_c
  1939.  
  1940.     move.l    a1,-(sp)
  1941.     bsr    block_read        ; ein block lesen
  1942.     bsr    doppel_spei        ; Doppelspeicher anfordern
  1943.     bsr    block_umsp        ; Block umspeichern
  1944.     move.l    (sp)+,a1
  1945.  
  1946.     move.l    ueb_ga2(a5),(a1)    ; verketten
  1947.  
  1948.     move.l    ueb_ga1(a5),a0        ; chain ?
  1949.     move.l    chain(a0),d0
  1950.     cmp.l    #0,d0
  1951.     beq    dir7_1_c
  1952.     move.l    ueb_ga1(a5),n_chain_n(a5)    ; Zeiger auf Speicher merken
  1953.     move.l    ueb_ga2(a5),n_chain_s(a5)    ; Zeiger auf Speicher merken
  1954. dir7_1_c    
  1955.     move.l    #0,d6
  1956.     move.l    ueb_ga1(a5),a0
  1957.     lea    extension(a0),a0
  1958.     move.l    (a0),d0
  1959.     cmp.l    #0,d0            ; nächst Extension (wird auch in bl-read gebracht)
  1960.     beq    dir8_c
  1961.     move.l    ueb_ga1(a5),a0
  1962.     lea    sec_type(a0),a0
  1963.     move.l    (a0),d1
  1964.     cmp.w    #-3,d1            ; Section typ( -3 = File header)
  1965.     bne    dir8_c
  1966.     move.l    #1,d6
  1967.     move.l    ueb_ga2(a5),a0        ; a1 auf extension setzen
  1968.     lea    extension(a0),a1
  1969. dir8_c    
  1970.     bra    dir7_c
  1971. dir9_c
  1972.     bra    dir6_c
  1973. dir10_c            
  1974.  
  1975.  
  1976.  
  1977.     bra    dir5
  1978. dir10
  1979.     bra    dir5
  1980. dir20
  1981.  
  1982.     move.l    a4,a0
  1983.     lea    extension(a0),a0
  1984.     move.l    (a0),d0
  1985.     cmp.l    #0,d0
  1986.     beq    dir30            ; kein extension -> Aussprung
  1987.     move.l    (a4),a4            ; Verkettung -> Schatten
  1988.     lea    extension(a4),a4
  1989.     move.l    (a4),a4            ; zeigt auf erweiterung
  1990.     move.l    (a4),a4            ; Verkettung auf-> n schatten
  1991.  
  1992.     bra    dir3
  1993. dir30
  1994.     bsr    motor_aus
  1995.  
  1996.     lea    _IntBase(pc),a6        
  1997.     move.l    (a6),a6
  1998.  
  1999.     lea    windowv(pc),a0
  2000.     move.l    (a0),a0
  2001.     move.l    #$108,d0        ; botton 8 - Pick 100 
  2002.     jsr    _LVOModifyIDCMP(a6)
  2003.  
  2004.     rts    
  2005.  
  2006. *--------------------------------------------------------------------------    
  2007. text_ermitteln                ; braucht alle Register
  2008.  
  2009.     move.l    a6,-(sp)
  2010.     move.l    text_roh(a5),a6        ; a6 ist hier der Zeiger auf Textspeicher
  2011.     move.l    text_zw(a5),a0        ; a6 ist hier der Zeiger auf Textspeicher
  2012.     move.l    text_geo(a5),a1        ; a6 ist hier der Zeiger auf Textspeicher
  2013.     move.l    #spei_grö_text,d0    ; zuerst immer löschen
  2014.     sub.l    #1,d0
  2015. erm1
  2016.     move.b    #0,(a6)+        ; löschen
  2017.     move.b    #0,(a0)+        ; löschen
  2018.     move.b    #0,(a1)+        ; löschen
  2019.     dbra    d0,erm1
  2020.     move.l    text_roh(a5),a6        ; a6 ist hier der Zeiger auf Textspeicher
  2021.  
  2022.     move.l    #0,d6            ; zählt alle Einträge
  2023.     move.l    ak_dir(a5),a4
  2024. erm3
  2025.     move.l    a4,a3
  2026.     move.l    (a4),a2            ; Schatten
  2027.  
  2028.     lea    hasch_v(a3),a3
  2029.     lea    hasch_v(a2),a2
  2030.     move.l    #5,d5            ; Zähler für Hasch 6...77
  2031.  
  2032. erm5
  2033.     move.l    #0,d2            ; kennung f dir  (=1)
  2034.     move.l    (a2)+,a1        ; nur erhöhen
  2035.     move.l    (a3)+,d0
  2036.     add.l    #1,d5
  2037.     cmp.l    #78,d5
  2038.     beq    erm20            ; dann alle bis 78 durch
  2039.  
  2040.     cmp.l    #0,d0
  2041.     beq    erm10            ; kein eintrag
  2042.     move.l    a1,n_chain_s(a5)
  2043.     move.l    (a1),n_chain_n(a5)
  2044. erm51
  2045.     move.l    (a1),a1            ; schatten -> Block
  2046.  
  2047.     move.l    a1,a0
  2048.     lea    sec_type(a0),a0
  2049.     move.l    (a0),off_dir(a6)    ; Typ in Text eintragen
  2050.  
  2051.     move.l    (a1),off_zei(a6)    ; Zeiger auf Block eintragen
  2052.  
  2053.     move.l    a6,a0            ; retten um später zu erhöhen
  2054.     lea    name(a1),a1
  2055.     clr    d1
  2056.     move.b    (a1)+,d1        ; Anzahl Buchstaben
  2057.     move.b    d1,off_bu(a6)
  2058.     sub.l    #1,d1
  2059.  
  2060.     move.l    off_dir(a6),d2        ; Typ  = Dir ?
  2061.     cmp.w    #2,d2
  2062.     bne    erm6
  2063.     move.b    #' ',(a0)+        ; dann 1 als Zwischenraum
  2064. erm6
  2065. erm7
  2066.     move.b    (a1)+,(a0)+
  2067.     dbra    d1,erm7
  2068.  
  2069.     move.l    off_dir(a6),d2        ; Typ  = Dir ?
  2070.     cmp.w    #2,d2
  2071.     bne    erm8
  2072.     move.b    #' ',(a0)+        ; dann (dir) dahinter schreiben
  2073.     move.b    #'(',(a0)+        
  2074.     move.b    #'d',(a0)+        
  2075.     move.b    #'i',(a0)+        
  2076.     move.b    #'r',(a0)+        
  2077.     move.b    #')',(a0)+    
  2078.     add.b    #7,off_bu(a6)
  2079. erm8
  2080.  
  2081.     add.l    #1,d6
  2082.     adda.l    #text_br,a6        ; um text,^,kennung erhöhen
  2083.     bra    erm11
  2084. erm10
  2085.     bra    erm5            
  2086. erm11
  2087.     move.l    n_chain_n(a5),a0    ; Chain-Eintrag ?
  2088.     move.l    chain(a0),d0
  2089.     cmp.l    #0,d0
  2090.     beq    erm5            ; nicht,dann erm5
  2091.  
  2092.     move.l    n_chain_s(a5),a1
  2093.     move.l    chain(a1),a1        ; chain sind im Schatten verkettet
  2094.     move.l    a1,n_chain_s(a5)
  2095.     move.l    (a1),n_chain_n(a5)
  2096.     bra    erm51
  2097. erm20
  2098.  
  2099.     move.l    a4,a0
  2100.     lea    extension(a0),a0
  2101.     move.l    (a0),d0
  2102.     cmp.l    #0,d0
  2103.     beq    erm30            ; kein extension -> Aussprung
  2104.     move.l    (a4),a4            ; Verkettung -> Schatten
  2105.     lea    extension(a4),a4
  2106.     move.l    (a4),a4            ; zeigt auf erweiterung
  2107.     move.l    (a4),a4            ; Verkettung auf-> n schatten
  2108.  
  2109.     bra    erm3
  2110. erm30
  2111.     move.l    d6,an_dir(a5)
  2112.     move.l    ak_dir(a5),a0
  2113.     move.l    d6,dir_eintr(a0)
  2114.     move.l    #0,erste_im_dir(a5)
  2115.     move.l    (sp)+,a6
  2116.  
  2117.     move.l    ak_dir(a5),a0        ; Pfadnamen erweitern
  2118.     lea    name(a0),a0
  2119.     move.l    gr_pfad(a5),d0        ; Pfad-größe 
  2120.     lea    pfad_name(pc),a1
  2121.     adda.l    d0,a1
  2122.     clr    d1
  2123.     move.b    (a0)+,d1        ; Namensgröße
  2124.     add.l    d1,gr_pfad(a5)
  2125.  
  2126.     cmp.l    #0,d0
  2127.     beq    erm33            ; wenn nicht erstes (also root-dir)
  2128.     cmp.b    #'/',-1(a1)    
  2129.     beq    erm33            ; und nicht nach /
  2130.     cmp.b    #':',-1(a1)    
  2131.     beq    erm33            ; und nicht nach :
  2132.     move.b    #'/',(a1)+        
  2133.     add.l    #1,gr_pfad(a5)        
  2134.  
  2135. erm33
  2136.  
  2137.     sub.l    #1,d1
  2138. erm35
  2139.     move.b    (a0)+,(a1)+
  2140.     dbra    d1,erm35
  2141.  
  2142.     cmp.l    #0,d0
  2143.     bne    erm36
  2144.     add.l    #1,gr_pfad(a5)        ; Dir Doppelpunkt dranhängen
  2145.     move.b    #':',(a1)
  2146.     
  2147. erm36
  2148.  
  2149.     rts                    
  2150. *--------------------------------------------------------------------------    
  2151. text_ordnen
  2152.  
  2153.     lea    abc_anzahl(pc),a2    ; zählt die Namen zu den einzelnen Buchstaben
  2154.     move.l    text_zw(a5),a1        ; text_roh wird bei Text_ermitteln gelöscht
  2155.  
  2156.     move.l    #25,d6            ; für 26 Buchstaben
  2157.     move.l    #'A',d3
  2158.     move.l    #'a',d2
  2159.     
  2160. ordn0
  2161.     move.b    #0,(a2)+
  2162.  
  2163.     move.l    text_roh(a5),a0
  2164.     move.l    an_dir(a5),d5        ; Anzahl Zeilen
  2165.     cmp.l    #0,d5
  2166.     beq    ordn40
  2167.     sub.l    #1,d5
  2168.     move.l    #0,d1
  2169. ordn2
  2170.     move.b    (a0),d0
  2171.     cmpi.w    #2,off_dir+2(a0)
  2172.     bne    ordn3
  2173.     move.b    1(a0),d0
  2174. ordn3
  2175.     cmp.b    d0,d3
  2176.     beq    ordn6
  2177.     cmp.b    d0,d2
  2178.     beq    ordn6
  2179.     bra    ordn16            ; dann nicht der Buchstabe
  2180. ordn6
  2181.     add.b    #1,-1(a2)        ; Zähler erhöhen
  2182.     clr    d4
  2183.     move.b    off_bu(a0),d4        ; so lang ist der Name
  2184.     sub.l    #1,d4
  2185.     move.l    a0,a3
  2186.     move.l    a1,a4
  2187.     cmpi.w    #2,off_dir+2(a0)    ; typ = dir ?
  2188.     bne    ordn7
  2189.     sub.l    #7,d4            ; wird kürzer um Blank und (dir)
  2190.     adda.l    #1,a3            ; 1. Blank weg
  2191.     
  2192. ordn7
  2193.  
  2194. ordn8
  2195.     move.b    (a3)+,d0        ; buchstaben übertragen
  2196.     cmp.b    #'a',d0
  2197.     blt    ordn10
  2198.     cmp.b    #'z',d0
  2199.     bgt    ordn10
  2200.     sub.b    #32,d0
  2201. ordn10
  2202.     move.b    d0,(a4)+
  2203.  
  2204.     dbra    d4,ordn8        ; Buchstaben umspeichern - Schl
  2205.  
  2206.     move.l    d1,off_off(a1)
  2207.     adda.l    #text_br,a1
  2208.     move.b    #1,off_hin(a0)        ; kennung, daß übertragen    
  2209.  
  2210. ordn16
  2211.     add.l    #text_br,d1
  2212.     adda.l    #text_br,a0
  2213.  
  2214.     dbra    d5,ordn2        ; 1 ... an_dir Schleife
  2215.  
  2216.     add.b    #1,d3            ; Buchstaben erhöhen
  2217.     add.b    #1,d2
  2218.  
  2219.     dbra    d6,ordn0        ; a - z schleife
  2220.  
  2221.                     ; zw -> geo
  2222.                     ; -----------
  2223.     lea    abc_anzahl(pc),a3    ; tatsächl. anzahl ermitteln
  2224.     move.l    text_geo(a5),a2        ; wenn überspr wird a2 hinten gebraucht
  2225.     move.l    text_roh(a5),a0
  2226.     move.l    text_zw(a5),a1
  2227.     move.l    #25,d5
  2228. ordn_20
  2229.     clr    d6
  2230.     move.b    (a3)+,d6
  2231.     cmp.l    #0,d6
  2232.     beq    ordn_30            ; wenn Null- nichts umspeichern
  2233.     cmp.l    #1,d6
  2234.     bgt    ordn_22            ; wenn > 1
  2235.  
  2236.     move.l    #0,d1
  2237.     bsr    zeile_um
  2238.     adda.l    #text_br,a1
  2239.     bra    ordn_30
  2240. ordn_22
  2241.     sub.l    #1,d6
  2242. ordn_23
  2243.     move.l    #$7FFFFFFF,a6
  2244.     clr    d3
  2245.     move.b    -1(a3),d3
  2246.     sub.l    #1,d3
  2247.     move.l    #0,d1
  2248.     move.l    #0,d2
  2249. ordn_25
  2250.     move.b    off_hin(a1,d1),d4
  2251.     cmp.b    #1,d4
  2252.     beq    ordn_27
  2253.     move.l    0(a1,d1),a4
  2254.     cmpa.l    a6,a4
  2255.     bgt    ordn_27
  2256.  
  2257.     move.l    0(a1,d1),a6            ; kleinstes 
  2258.     move.l    d1,d2
  2259.     
  2260. ordn_27
  2261.     add.l    #text_br,d1
  2262.     dbra    d3,ordn_25
  2263.  
  2264.     move.l    d2,d1
  2265.     bsr    zeile_um
  2266.     move.b    #1,off_hin(a1,d1)        ; Kennung setzen
  2267.  
  2268.     dbra    d6,ordn_23
  2269.  
  2270.     clr    d3                ; a1 um n X text_br erhöhen
  2271.     move.b    -1(a3),d3
  2272.     sub.l    #1,d3
  2273. ordn_29
  2274.     adda.l    #text_br,a1
  2275.     dbra    d3,ordn_29
  2276.  
  2277.  
  2278. ordn_30
  2279.     dbra    d5,ordn_20
  2280.  
  2281.  
  2282.  
  2283.  
  2284. ordn33
  2285.     move.l    an_dir(a5),d6        ; und den Rest übertragen
  2286.     cmp.l    #0,d6
  2287.     beq    ordn40
  2288.     sub.l    #1,d6            ; die z.B. mit . beginnen
  2289.     move.l    text_roh(a5),a0
  2290. ordn34
  2291.     move.b    off_hin(a0),d0
  2292.     cmp.b    #1,d0
  2293.     beq    ordn38
  2294.     move.l    a0,a1
  2295.     move.l    #text_br,d5
  2296.     sub.l    #1,d5
  2297. ordn36
  2298.     move.b    (a1)+,(a2)+
  2299.     dbra    d5,ordn36
  2300.  
  2301. ordn38
  2302.     adda.l    #text_br,a0
  2303.  
  2304.     dbra    d6,ordn34
  2305. ordn40
  2306.     rts
  2307. *--------------------------------------------------------------------------    
  2308. zeile_um
  2309.     move.l    off_off(a1,d1),d0
  2310.     lea    0(a0,d0),a4
  2311.     move.l    #text_br,d4
  2312.     sub.l    #1,d4
  2313. zei_um1
  2314.     move.b    (a4)+,(a2)+
  2315.     dbra    d4,zei_um1
  2316.  
  2317.     rts
  2318. *--------------------------------------------------------------------------    
  2319. text_ausgeben    
  2320.  
  2321.     lea    _GfxBase(pc),a6
  2322.     move.l    (a6),a6
  2323.  
  2324.     bsr    linke_an_lö
  2325.  
  2326.     move.l    #0,nr_gewählt(a5)
  2327.  
  2328.     move.l    ak_dir(a5),a0
  2329.     move.l    dir_eintr(a0),an_dir(a5)
  2330.  
  2331.     move.l    text_geo(a5),a4
  2332.     move.l    erste_im_dir(a5),d0
  2333.     mulu    #text_br,d0
  2334.     adda.l    d0,a4            ; a4 steht auf erste ausgebbare zeile
  2335.     move.l    a4,erste_merken(a5)    ; um Mausclicks zu finden (überflüssig)
  2336.  
  2337.     move.l    erste_im_dir(a5),d6
  2338.     move.l    an_dir(a5),d5
  2339.     move.l    #text_y,d4
  2340. taus1
  2341.  
  2342.     PEN 0,4
  2343.  
  2344.     move.l    off_dir(a4),d2        ; Typ  = Dir ?
  2345.     cmp.w    #2,d2
  2346.     bne    taus2
  2347.  
  2348.     PEN 7,4
  2349.  
  2350. taus2
  2351.     move.l    rp(a5),a1
  2352.     move.l    #text_x,d0
  2353.     move.l    d4,d1
  2354.     jsr    _LVOMove(a6)
  2355.  
  2356.     clr    d0
  2357.     move.b    off_bu(a4),d0
  2358.     move.l    a4,a0
  2359.     move.l    rp(a5),a1
  2360.     jsr    _LVOText(a6)
  2361.  
  2362.     add.l    #10,d4
  2363.     cmp.l    #230,d4
  2364.     bgt     taus3
  2365.  
  2366.     add.l    #1,d6
  2367.     cmp.l    d5,d6
  2368.     bgt    taus3
  2369.     
  2370.     adda.l    #text_br,a4
  2371.  
  2372.     bra    taus1
  2373.  
  2374. taus3
  2375.     PEN 6,4                ; dir Name ausgeben
  2376.     
  2377.     move.l    rp(a5),a1
  2378.     move.l    #50,d0
  2379.     move.l    #20,d1
  2380.     jsr    _LVOMove(a6)
  2381.  
  2382.     lea    pfad_name(pc),a0
  2383.     move.l    gr_pfad(a5),d0
  2384.     cmp.l    #24,d0
  2385.     bgt    taus10
  2386.     move.l    rp(a5),a1
  2387.     jsr    _LVOText(a6)
  2388.  
  2389.     rts
  2390. taus10
  2391.     add.l    d0,a0            ; nur die letzten 29 Buchstaben
  2392.     suba.l    #24,a0
  2393.     move.l    #24,d0
  2394.     move.l    rp(a5),a1
  2395.     jsr    _LVOText(a6)
  2396.  
  2397.     move.l    rp(a5),a1        ; und  ....
  2398.     move.l    #50,d0
  2399.     move.l    #20,d1
  2400.     jsr    _LVOMove(a6)
  2401.  
  2402.     lea    vier_punkte(pc),a0
  2403.     move.l    #4,d0
  2404.     move.l    rp(a5),a1
  2405.     jsr    _LVOText(a6)
  2406.  
  2407.     rts
  2408.  
  2409. *--------------------------------------------------------------------------    
  2410.  
  2411. linke_an_lö
  2412.  
  2413.     PEN    4            ; Textfenster löschen
  2414.  
  2415.     move.l    rp(a5),a1
  2416.     move.l    #text_x,d0
  2417.     move.l    #text_yo,d1
  2418.     move.l    #text_xu,d2
  2419.     move.l    #text_yu,d3
  2420.     jsr    _LVORectFill(a6)
  2421.  
  2422.     move.l    rp(a5),a1        ; text fgewähltes feld löschen
  2423.     move.l    #text_x,d0
  2424.     move.l    #241,d1
  2425.     move.l    #text_xu,d2
  2426.     move.l    #249,d3
  2427.     jsr    _LVORectFill(a6)
  2428.  
  2429.     move.l    rp(a5),a1        ; Dir Name löschen
  2430.     move.l    #50,d0
  2431.     move.l    #13,d1
  2432.     move.l    #text_xu,d2
  2433.     move.l    #21,d3
  2434.     jsr    _LVORectFill(a6)
  2435.  
  2436.     rts
  2437.  
  2438. *--------------------------------------------------------------------------    
  2439. n_oben_scr
  2440.                     ; in d0 steht momemtane höchst Nr
  2441.                     ; in d1 anzahl im Dir
  2442.     movem.l    d0-d1,-(sp)
  2443.     lea    _IntBase(pc),a6        
  2444.     move.l    (a6),a6
  2445.  
  2446.     lea    windowv(pc),a0
  2447.     move.l    (a0),a0
  2448.     move.l    #$8,d0            ; 8 nur MouseBottem (wegen Up) 
  2449.     jsr    _LVOModifyIDCMP(a6)
  2450.     movem.l    (sp)+,d0-d1
  2451.  
  2452.  
  2453.     move.l    #1,d0
  2454.     sub.l    d4,d0
  2455.     move.l    erste_im_dir(a5),d1
  2456.     move.l    d0,an_sc(a5)
  2457.     add.l    #1,an_sc(a5)
  2458.     neg.l    an_sc(a5)
  2459.  
  2460.     move.l    text_geo(a5),a4
  2461.     move.l    d1,d3
  2462.     mulu    #text_br,d3
  2463.     adda.l    d3,a4            ; Zeiger auf textspeicherposition in geo
  2464.     move.l    #35,d5            ; y- Wert    
  2465.     move.l    an_sc(a5),d6
  2466.     neg.l    d6
  2467.     move.l    #10,d3
  2468.     divu    d6,d3
  2469.     move.l    d3,d6
  2470.     sub.l    #1,d6            ; 4 oder 9 in d6
  2471. oben_1
  2472.     bsr    scrollen
  2473.     suba.l    #text_br,a4
  2474.     bsr    text_scr
  2475.     sub.l    #1,d1
  2476.     cmp.l    #0,d1
  2477.     beq    oben_2
  2478.     dbra    d0,oben_1
  2479. oben_2
  2480.     move.l    d1,erste_im_dir(a5)
  2481.  
  2482.     lea    _IntBase(pc),a6        
  2483.     move.l    (a6),a6
  2484.  
  2485.     lea    windowv(pc),a0
  2486.     move.l    (a0),a0
  2487.     move.l    #$118,d0        ; botton 8 - Pick 100 - Mousemove 10
  2488.     jsr    _LVOModifyIDCMP(a6)
  2489.  
  2490.     rts
  2491. *--------------------------------------------------------------------------    
  2492. n_unten_scr
  2493.  
  2494.                     ; in d0 steht momemtane höchst Nr
  2495.                     ; in d1 anzahl im Dir
  2496.     movem.l    d0-d1,-(sp)
  2497.     lea    _IntBase(pc),a6        
  2498.     move.l    (a6),a6
  2499.  
  2500.     lea    windowv(pc),a0
  2501.     move.l    (a0),a0
  2502.     move.l    #$8,d0            ; 8 nur MouseBottem (wegen Up) 
  2503.     jsr    _LVOModifyIDCMP(a6)
  2504.     movem.l    (sp)+,d0-d1
  2505.  
  2506.     move.l    #an_zeilen,d2
  2507.     sub.l    d4,d2
  2508.     move.l    #1,d4
  2509.     sub.l    d2,d4
  2510.     move.l    d4,an_sc(a5)
  2511.     add.l    #1,an_sc(a5)
  2512.  
  2513.     move.l    text_geo(a5),a4
  2514.     move.l    d0,d3
  2515.     mulu    #text_br,d3
  2516.     adda.l    d3,a4            ; Zeiger auf textspeicherposition in geo
  2517.     move.l    #225,d5            ; y- Wert    
  2518.     move.l    an_sc(a5),d6
  2519.     move.l    #10,d3
  2520.     divu    d6,d3
  2521.     move.l    d3,d6
  2522.     sub.l    #1,d6            ; 4 oder 9 in d6
  2523. unten_1
  2524.     bsr    scrollen
  2525.     bsr    text_scr
  2526.     adda.l    #text_br,a4
  2527.     add.l    #1,d0
  2528.     cmp.l    d1,d0
  2529.     beq    unten_2
  2530.     dbra    d4,unten_1
  2531. unten_2
  2532.     sub.l    #an_zeilen,d0
  2533.     move.l    d0,erste_im_dir(a5)
  2534.  
  2535.  
  2536.     lea    _IntBase(pc),a6        
  2537.     move.l    (a6),a6
  2538.  
  2539.     lea    windowv(pc),a0
  2540.     move.l    (a0),a0
  2541.     move.l    #$118,d0        ; botton 8 - Pick 100 - Mousemove 10
  2542.     jsr    _LVOModifyIDCMP(a6)
  2543.  
  2544.     rts
  2545. *--------------------------------------------------------------------------    
  2546. scrollen
  2547.  
  2548.     movem.l    d0-d6,-(sp)
  2549.  
  2550.     lea    _GfxBase(pc),a6        
  2551.     move.l    (a6),a6
  2552.  
  2553. scro1                    ; d6 von oben und gerettet ! (auf sp)
  2554.     move.l    rp(a5),a1        
  2555.     move.l    #0,d0
  2556.     move.l    an_sc(a5),d1 
  2557.     move.l    #text_x,d2
  2558.     move.l    #text_yo+1,d3
  2559.     move.l    #text_xu,d4
  2560.     move.l    #text_yu-5,d5
  2561.     jsr    _LVOScrollRaster(a6)
  2562.  
  2563.     dbra    d6,scro1
  2564.  
  2565.     movem.l    (sp)+,d0-d6
  2566.     rts
  2567. *--------------------------------------------------------------------------    
  2568. text_scr
  2569.     movem.l    d0-d6,-(sp)
  2570.  
  2571.     PEN 0,4
  2572.  
  2573.     move.l    off_dir(a4),d2        ; Typ  = Dir ?
  2574.     cmp.w    #2,d2
  2575.     bne    t_s1
  2576.  
  2577.     PEN 7,4
  2578.  
  2579. t_s1
  2580.     move.l    rp(a5),a1
  2581.     move.l    #text_x,d0
  2582.     move.l    d5,d1
  2583.     jsr    _LVOMove(a6)
  2584.  
  2585.     clr    d0
  2586.     move.b    off_bu(a4),d0
  2587.     move.l    a4,a0
  2588.     move.l    rp(a5),a1
  2589.     jsr    _LVOText(a6)
  2590.  
  2591.  
  2592.     movem.l    (sp)+,d0-d6
  2593.     rts
  2594.  
  2595. *--------------------------------------------------------------------------    
  2596. datei_anzeigen
  2597.     
  2598.     PEN 4                ; Feld löschen
  2599.     move.l    rp(a5),a1
  2600.     move.l    #text_x,d0
  2601.     move.l    #241,d1
  2602.     move.l    #text_xu,d2
  2603.     move.l    #249,d3
  2604.     jsr    _LVORectFill(a6)
  2605.  
  2606.     move.l    a4,-(sp)
  2607.     bsr    nr_loeschen        ; alte Angaben immer löschen
  2608.     move.l    (sp)+,a4
  2609.  
  2610.     PEN 10,4            ; gewählt schreiben
  2611.  
  2612.     move.l    rp(a5),a1
  2613.     move.l    #text_x,d0
  2614.     move.l    #248,d1
  2615.     jsr    _LVOMove(a6)
  2616.  
  2617.     clr    d0
  2618.     move.b    off_bu(a4),d0
  2619.     move.l    a4,a0
  2620.     move.l    rp(a5),a1
  2621.     jsr    _LVOText(a6)
  2622.  
  2623.  
  2624.     move.l    off_zei(a4),a3        ; zeigt auf Schatten
  2625. da1
  2626.  
  2627.     PEN     10
  2628.  
  2629.     move.l    (a3),a2
  2630.     move.l    eigen(a2),d6        ; eigene Block nr ausgeben
  2631.     move.l    lfd_num(a5),a0
  2632.     move.w    d6,(a0)+
  2633.     move.l    a0,lfd_num(a5)
  2634.  
  2635.     bsr    nr_zei
  2636.     lea    hasch_v(a2),a2
  2637.     move.l    #5,d5
  2638.  
  2639.     PEN     9
  2640. da2                    ; und alle weiteren Blocks in anderer Farbe
  2641.     add.l    #1,d5
  2642.     cmp.l    #78,d5
  2643.     beq    da4
  2644.     move.l    (a2)+,d6
  2645.     cmp.l    #0,d6
  2646.     beq    da3
  2647.  
  2648.     move.l    lfd_num(a5),a0
  2649.     move.w    d6,(a0)+
  2650.     move.l    a0,lfd_num(a5)
  2651.  
  2652.     bsr    nr_zei
  2653. da3
  2654.     bra    da2    
  2655. da4
  2656.     move.l    extension(a3),d0
  2657.     cmp.l    #0,d0
  2658.     beq    da5
  2659.     lea    extension(a3),a3
  2660.     move.l    (a3),a3
  2661.     bra    da1
  2662. da5
  2663.  
  2664.     PEN     6
  2665.  
  2666.     move.l    ak_dir(a5),a2        ; und dazugehörige dir_Blocks ganz ausgeben
  2667.     move.l    (a2),a3            ; -> Schatten
  2668. da10
  2669.     move.l    (a3),a2
  2670.     move.l    eigen(a2),d6    
  2671.     cmp.l    #0,d6
  2672.     bne    da11
  2673.     move.l    #880,d6
  2674. da11    
  2675.     move.l    lfd_num(a5),a0
  2676.     move.w    d6,(a0)+
  2677.     move.l    a0,lfd_num(a5)
  2678.  
  2679.     bsr    nr_zei
  2680.  
  2681.     move.l    extension(a3),d0
  2682.     cmp.l    #0,d0
  2683.     beq    da12
  2684.     lea    extension(a3),a3
  2685.     move.l    (a3),a3
  2686.     bra    da10
  2687. da12
  2688.  
  2689.     rts
  2690.     
  2691. *--------------------------------------------------------------------------    
  2692. pfad_kuerzen
  2693.  
  2694.     move.l    gr_pfad(a5),d0        ; Pfad-größe 
  2695.     lea    pfad_name(pc),a0    ; Pfadnamen um 2 kürzen
  2696.     adda.l    d0,a0
  2697.  
  2698. pfad_1                    ; zuerst Pfad bis / oder : kürzen
  2699.     move.b    -(a0),d1
  2700.     sub.l    #1,d0
  2701.     cmp.b    #'/',d1
  2702.     beq    pfad_2
  2703.     cmp.b    #':',d1
  2704.     beq    pfad_2
  2705.     bra    pfad_1
  2706. pfad_2
  2707. pfad_3                    ; dann bis / : oder Länge = = kürzen
  2708.     move.b    -(a0),d1
  2709.     sub.l    #1,d0
  2710.     cmp.l    #0,d0
  2711.     beq    pfad_5
  2712.     cmp.b    #'/',d1
  2713.     beq    pfad_5
  2714.     cmp.b    #':',d1
  2715.     beq    pfad_4
  2716.     bra    pfad_3
  2717. pfad_4
  2718.     add.l    #1,d0            ; dann : lassen
  2719. pfad_5
  2720.  
  2721.     move.l    d0,gr_pfad(a5)
  2722.  
  2723.     rts    
  2724.  
  2725. *--------------------------------------------------------------------------    
  2726. *--------------------------------------------------------------------------    
  2727. raster
  2728.     PEN 2
  2729.  
  2730.     move.l    xl1(a5),d0        ; 2 große Rechtecke
  2731.     move.l    yl1(a5),d1
  2732.     bsr    raster1
  2733.  
  2734.     move.l    xl2(a5),d0
  2735.     move.l    yl2(a5),d1
  2736.     bsr    raster1
  2737.  
  2738.     PEN 0
  2739.  
  2740.     move.l    xl1(a5),d0        ; 2 X senkrechter dicker Strich
  2741.     move.l    yl1(a5),d1
  2742.     bsr    raster2
  2743.  
  2744.     move.l    xl2(a5),d0
  2745.     move.l    yl2(a5),d1
  2746.     bsr    raster2
  2747.  
  2748.     move.l    xl1(a5),d0        ; 2 X waagerechter dicker Strich
  2749.     move.l    yl1(a5),d1
  2750.     bsr    raster3
  2751.  
  2752.     move.l    xl2(a5),d0
  2753.     move.l    yl2(a5),d1
  2754.     bsr    raster3
  2755.  
  2756.     move.l    xl1(a5),a3        ; senkrechte Linien
  2757.     move.l    yl1(a5),a4
  2758.     bsr    raster4
  2759.  
  2760.     move.l    xl2(a5),a3
  2761.     move.l    yl2(a5),a4
  2762.     bsr    raster4
  2763.  
  2764.     move.l    xl1(a5),a3        ; waagerechte Linien
  2765.     move.l    yl1(a5),a4
  2766.     bsr    raster5
  2767.  
  2768.     move.l    xl2(a5),a3
  2769.     move.l    yl2(a5),a4
  2770.     bsr    raster5
  2771.     rts
  2772.  
  2773.  
  2774. raster1                    ; Rechteck füllen
  2775.     move.l    rp(a5),a1
  2776.     add.l    #10,d0
  2777.     add.l    #5,d1
  2778.     move.l    d0,d2
  2779.     move.l    d1,d3
  2780.     add.l    #11*12-2+8,d2
  2781.     add.l    #80*3-1+3,d3
  2782.     jsr    _LVORectFill(a6)
  2783.  
  2784.     rts
  2785.  
  2786. raster2                    ; senkrechter schwarzer Balken
  2787.     move.l    rp(a5),a1
  2788.     add.l    #10,d0
  2789.     add.l    #5,d1
  2790.     move.l    d0,d2
  2791.     move.l    d1,d3
  2792.     add.l    #5*12-2,d0
  2793.     add.l    #5*12-2+8,d2
  2794.     add.l    #80*3-1+3,d3
  2795.     jsr    _LVORectFill(a6)
  2796.  
  2797.     rts
  2798.  
  2799. raster3                    ; waagerechter schwarzer Balken
  2800.     move.l    rp(a5),a1
  2801.     add.l    #10,d0
  2802.     add.l    #5,d1
  2803.     move.l    d0,d2
  2804.     move.l    d1,d3
  2805.     add.l    #40*3-1,d1
  2806.     add.l    #11*12-2+8,d2
  2807.     add.l    #40*3-1+3,d3
  2808.     jsr    _LVORectFill(a6)
  2809.  
  2810.     rts
  2811.  
  2812. raster4                    ; senkrechte Linien
  2813.  
  2814.  
  2815.     adda.l    #10+10,a3
  2816.     adda.l    #5,a4
  2817.     move.l    a4,d5
  2818.     add.l    #80*3-1+3,d5
  2819.  
  2820.     move.l    #4,d6
  2821. ras0
  2822.     move.l    rp(a5),a1
  2823.     move.l    a3,d0
  2824.     move.l    a4,d1
  2825.     move.l    a3,d2
  2826.     add.l    #1,d2
  2827.     move.l    d5,d3
  2828.     jsr    _LVORectFill(a6)
  2829.  
  2830.     adda.l    #12,a3
  2831.     dbra    d6,ras0
  2832.  
  2833.     suba.l    #12-8,a3            
  2834.     move.l    #5,d6
  2835. ras1
  2836.     move.l    rp(a5),a1
  2837.     move.l    a3,d0
  2838.     move.l    a4,d1
  2839.     move.l    a3,d2
  2840.     add.l    #1,d2
  2841.     move.l    d5,d3
  2842.     jsr    _LVORectFill(a6)
  2843.  
  2844.     adda.l    #12,a3
  2845.     dbra    d6,ras1
  2846.  
  2847.     rts
  2848.  
  2849. raster5                    ; waagerechte Linien
  2850.  
  2851.     adda.l    #10,a3
  2852.     adda.l    #5+2,a4
  2853.     move.l    a3,d5
  2854.     add.l    #11*12-2+8,d5
  2855.  
  2856.     move.l    #78,d6
  2857. ras5
  2858.     move.l    rp(a5),a1
  2859.     move.l    a3,d0
  2860.     move.l    a4,d1
  2861.     move.l    d5,d2
  2862.     move.l    a4,d3
  2863.     jsr    _LVORectFill(a6)
  2864.  
  2865.     adda.l    #3,a4
  2866.     cmp.l    #40,d6
  2867.     bne    ras6
  2868.     adda.l    #6,a4
  2869. ras6
  2870.     dbra    d6,ras5
  2871.  
  2872.     rts
  2873.  
  2874. *--------------------------------------------------------------------------    
  2875. balken
  2876.  
  2877.     move.l    rp(a5),a1
  2878.     move.l    a2,d0
  2879.     move.l    a3,d1
  2880.     move.l    a2,d2
  2881.     move.l    a3,d3
  2882.     add.l    #9,d2
  2883.     add.l    #1,d3
  2884.     jsr    _LVORectFill(a6)
  2885.  
  2886.     rts
  2887.  
  2888. *--------------------------------------------------------------------------    
  2889. tabellieren    
  2890.     move.l    #5,-8(a5)
  2891.     move.l    #24,-12(a5)
  2892.     move.l    xl1(a5),a2
  2893.     lea    text1(pc),a4
  2894.  
  2895.     move.l    #1,d6            ; Ober u Unterseite
  2896. tabe1
  2897.     move.l    yl1(a5),a3
  2898.     adda.l    #5,a3
  2899.  
  2900.     
  2901.     move.l    #3,d5            ; obere Hälfte
  2902. tabe2
  2903.     bsr    tex_bal
  2904.     adda.l    #30,a3
  2905.     dbra    d5,tabe2
  2906.     adda.l    #3,a3
  2907.  
  2908.  
  2909.     move.l    #3,d5            ; untere Hälfte
  2910. tabe3
  2911.     bsr    tex_bal
  2912.     adda.l    #30,a3
  2913.     dbra    d5,tabe3
  2914.     
  2915.     move.l    #-5,-8(a5)
  2916.     move.l    #-10,-12(a5)
  2917.     move.l    xr2(a5),a2
  2918.     lea    text1(pc),a4
  2919.     
  2920.     dbra    d6,tabe1
  2921.     
  2922.     rts
  2923. *--------------------------------------------------------------------------    
  2924. tex_bal
  2925.     move.l    rp(a5),a1
  2926.     move.l    a2,d0
  2927.     move.l    a3,d1
  2928.     jsr    _LVOMove(a6)
  2929.     move.l    rp(a5),a1
  2930.     move.l    a2,d0
  2931.     sub.l    -8(a5),d0
  2932.     move.l    a3,d1
  2933.     jsr    _LVODraw(a6)
  2934.  
  2935.     move.l    rp(a5),a1
  2936.     move.l    a2,d0
  2937.     sub.l    -12(a5),d0
  2938.     move.l    a3,d1
  2939.     add.l    #5,d1
  2940.     jsr    _LVOMove(a6)
  2941.     
  2942.     move.l    rp(a5),a1
  2943.     move.l    #2,d0            ; Länge
  2944.     move.l    a4,a0
  2945.     jsr    _LVOText(a6)
  2946.     adda.l    #2,a4
  2947.  
  2948.     rts
  2949.  
  2950. *--------------------------------------------------------------------------    
  2951. block_nr_aus                ; xl_1,2 in a4, Mouse Koord in d4
  2952.  
  2953.     move.l    d4,d1
  2954.     and.l    #$FFFF,d1        ; -> y
  2955.     move.l    d1,mouse_y(a5)
  2956.     sub.l    #yl_1,d1
  2957.     cmp.l    #40*3,d1
  2958.     bls    nr_1
  2959.     sub.l    #3,d1
  2960. nr_1
  2961.     divu    #3,d1            ; ->  track in d1
  2962.     and.l    #$FFFF,d1
  2963.     move.l    d1,track(a5)
  2964.  
  2965.     move.l    d4,d2
  2966.     swap    d2
  2967.     and.l    #$FFFF,d2        ; -> x
  2968.     move.l    d2,mouse_x(a5)
  2969.     move.l    a4,d0            ; - xl_1,2
  2970.     sub.l    d0,d2
  2971.     cmp.l    #5*12,d2
  2972.     bls    nr_2
  2973.     sub.l    #6,d2
  2974. nr_2
  2975.     divu    #12,d2            ; ->  sektor  in d2
  2976.     and.l    #$FFFF,d2
  2977.     move.l    d2,sektor(a5)
  2978.  
  2979.     move.l    d1,d0            ; track * 22
  2980.     mulu    #22,d0
  2981.     add.l    d2,d0            ; + sektor
  2982.     move.l    head(a5),d6
  2983.     mulu    #11,d6            ; + head * 11
  2984.     add.l    d0,d6            ; Block-Nr in d6
  2985.     move.l    d6,block(a5)
  2986.  
  2987.  
  2988.     move.l    alte_bl_nr(a5),d0
  2989.     cmp.l    d0,d6
  2990.     bne    nr_4
  2991.  
  2992.     rts
  2993. nr_4                    ; neue Block-Nr !
  2994.     move.l    d6,alte_bl_nr(a5)
  2995.     move.l    d0,d6
  2996.  
  2997.     PEN     0
  2998.     bsr    nr_um            ; alte Umrandung löschen
  2999.     
  3000.     move.l    alte_bl_nr(a5),d6
  3001.     PEN     12
  3002.     bsr    nr_um            ; neue Umrandung setzen
  3003.     
  3004.     lea    rastport_b(pc),a0
  3005.     move.l    (a0),rp(a5)
  3006.  
  3007.     PEN     6,13
  3008.  
  3009.     move.l    block(a5),d2
  3010.     bsr    decl
  3011.     TEXT    #64,#24,8,buffer    ; x,y,länge,^ auf Text
  3012.     
  3013.     move.l    track(a5),d2
  3014.     bsr    decl
  3015.     TEXT    #64,#34,8,buffer    ; x,y,länge,^ auf Text
  3016.     
  3017.     move.l    head(a5),d2
  3018.     bsr    decl
  3019.     TEXT    #64,#44,8,buffer    ; x,y,länge,^ auf Text
  3020.     
  3021.     move.l    sektor(a5),d2
  3022.     bsr    decl
  3023.     TEXT    #64,#54,8,buffer    ; x,y,länge,^ auf Text
  3024.     
  3025.     TEXT    #24,#24,8,b_1        ; x,y,länge,^ auf Text
  3026.     TEXT    #24,#34,8,b_2        ; x,y,länge,^ auf Text
  3027.     TEXT    #24,#44,8,b_3        ; x,y,länge,^ auf Text
  3028.     TEXT    #24,#54,8,b_4        ; x,y,länge,^ auf Text
  3029.  
  3030.     lea    rastportv(pc),a0
  3031.     move.l    (a0),rp(a5)
  3032.  
  3033.     lea    _IntBase(pc),a6        
  3034.     move.l    (a6),a6
  3035.  
  3036.     lea    windowv(pc),a0
  3037.     move.l    (a0),a0
  3038.     move.l    #$118,d0        ; botton 8 - Pick 100 - Move 10    
  3039.     jsr    _LVOModifyIDCMP(a6)
  3040.  
  3041.     move.l    #1,select_down(a5)
  3042.  
  3043.     lea    window_b(pc),a0        ; kl Fenster nach vorne
  3044.     move.l    (a0),a0
  3045.     jsr    _LVOWindowToFront(a6)
  3046.  
  3047.     move.l    mouse_y(a5),d1
  3048.     divu    #3,d1            ;  y  * 2 Drittel
  3049.     and.l    #$FFFF,d1
  3050.     mulu    #2,d1
  3051.     move.l    mouse_x(a5),d0
  3052.     sub.l    #200,d0
  3053.  
  3054.     lea    window_b(pc),a0        
  3055.     move.l    (a0),a0
  3056.     sub.w    4(a0),d0
  3057.     ext.l    d0
  3058.     sub.w    6(a0),d1
  3059.     ext.l    d1
  3060.  
  3061.     lea    window_b(pc),a0        ; Window bewegen
  3062.     move.l    (a0),a0
  3063.     jsr    _LVOMoveWindow(a6)
  3064.  
  3065.     rts
  3066. *--------------------------------------------------------------------------    
  3067.  
  3068. nr_um                    ; Nr übergabe in d6 ! ! 
  3069.     movem.l    a2/a3,-(sp)
  3070.  
  3071.     move.l    d6,d0
  3072.     divu    #22,d0
  3073.     move.l    d0,d1
  3074.     ror.l    #8,d0
  3075.     ror.l    #8,d0
  3076.     and.l    #$ff,d0            ; Nachkommateil 0 ... 21
  3077.     and.l    #$ff,d1            ; Vorkommateil 0 ... 79  Sektor
  3078.  
  3079.     move.l    xl1(a5),a2        ; Horizontalen x Wert  berechnen
  3080.     cmp.l    #10,d0
  3081.     ble    nr_um1
  3082.     move.l    xl2(a5),a2
  3083.     sub.l    #11,d0
  3084. nr_um1
  3085.     adda.l    #10,a2
  3086.     cmp.l    #4,d0
  3087.     ble    nr_um2
  3088.     add.l    #8,a2
  3089. nr_um2
  3090.     mulu     #12,d0
  3091.     adda.l    d0,a2
  3092.  
  3093.     move.l    yl1(a5),a3        ; Vertikalen y Wert  berechnen
  3094.     adda.l    #5,a3
  3095.     cmp.l    #39,d1
  3096.     ble    nr_um5
  3097.     adda.l    #3,a3
  3098. nr_um5
  3099.     mulu     #3,d1
  3100.     adda.l    d1,a3
  3101.  
  3102.     suba.l    #2,a2
  3103.     suba.l    #1,a3
  3104.     
  3105.     bsr    umrandung
  3106.  
  3107.     movem.l    (sp)+,a2/a3
  3108.  
  3109.     rts
  3110. *--------------------------------------------------------------------------    
  3111. umrandung            ; braucht a2,a3,d4,d5  !!
  3112.  
  3113.     move.l    a2,d4
  3114.     move.l    a3,d5
  3115.     add.l    #13,d4
  3116.     add.l    #3,d5
  3117.     
  3118.     RECHTECK a2,a3,d4,d5
  3119.  
  3120.     rts
  3121. *--------------------------------------------------------------------------    
  3122. info_engl
  3123.  
  3124.     lea    _IntBase(pc),a6        
  3125.     move.l    (a6),a6
  3126.  
  3127.     lea    screen(pc),a0
  3128.     lea    screen_d(pc),a1
  3129.     move.l    (a0),(a1)
  3130.  
  3131.     lea    NewWindow_d(pc),a0    ; Window öffnen,_IntBase noch vorhanden
  3132.     jsr    _LVOOpenWindow(a6)
  3133.     lea    window_d(pc),a0        ; Windowzeiger sichern    
  3134.     move.l    d0,(a0)
  3135.     cmp.l    #0,d0
  3136.     beq    window_d0
  3137.     move.l    d0,a0
  3138.     move.l    50(a0),d0        ; Rastportadr. in d0
  3139.     lea    rastport_d(pc),a0    ; Rastportadr. sichern
  3140.     move.l    d0,(a0)    
  3141.     move.l    d0,rp(a5)
  3142.  
  3143.     lea    _IntBase(pc),a6        ; Viewportadr. holen
  3144.     move.l    (a6),a6
  3145.     lea    window_d(pc),a0
  3146.     move.l    (a0),a0
  3147.     jsr    _LVOViewPortAdress(a6)
  3148.     lea    viewportad_d(pc),a0
  3149.     move.l    d0,(a0)
  3150.  
  3151.     TEXT    #20,#20,46,d_1        ; x,y,länge,^ auf Text
  3152.     TEXT    #20,#30,46,d_2        ; x,y,länge,^ auf Text
  3153.     TEXT    #20,#40,46,d_3        ; x,y,länge,^ auf Text
  3154.     TEXT    #20,#50,46,d_4        ; x,y,länge,^ auf Text
  3155.     TEXT    #20,#60,46,d_5        ; x,y,länge,^ auf Text
  3156.     TEXT    #20,#70,46,d_6        ; x,y,länge,^ auf Text
  3157.     TEXT    #20,#80,46,d_7        ; x,y,länge,^ auf Text
  3158.  
  3159.  
  3160.     PEN     6
  3161.     
  3162.     move.l    rp(a5),a1
  3163.     move.l    #10,d0
  3164.     move.l    #15,d1
  3165.     move.l    #30,d2
  3166.     move.l    #20,d3
  3167.     jsr    _LVORectFill(a6)
  3168.  
  3169.  
  3170.     PEN     10
  3171.     
  3172.     move.l    rp(a5),a1
  3173.     move.l    #10,d0
  3174.     move.l    #25,d1
  3175.     move.l    #30,d2
  3176.     move.l    #30,d3
  3177.     jsr    _LVORectFill(a6)
  3178.  
  3179.  
  3180.     PEN     9
  3181.     
  3182.     move.l    rp(a5),a1
  3183.     move.l    #10,d0
  3184.     move.l    #35,d1
  3185.     move.l    #30,d2
  3186.     move.l    #40,d3
  3187.     jsr    _LVORectFill(a6)
  3188.  
  3189.  
  3190. warten_d
  3191.     lea    window_d(pc),a0        ; Hole Adr. MessagePort des Fensters
  3192.     move.l    (a0),a0
  3193.     move.l    86(a0),a0        ; steht ab 86
  3194.     move.l    _SysBase,a6
  3195.     jsr    _LVOGetMsg(a6)        ; Message vom Port in a0 holen
  3196.     cmp.l    #0,d0
  3197.     beq    warten_d        ; 0,dann ligt keine Msg vor
  3198.     move.l    d0,a1            ; Zeiger auf die messagestruktur
  3199.     move.l    20(a1),d3        ; Klasse der Message
  3200.     move.l    #0,d2
  3201.     move.w    24(a1),d2        ; Code der Message
  3202.     move.l    32(a1),d4        ; Mauskoor
  3203.     jsr    _LVOReplyMsg(a6)    ; zurückschicken
  3204.  
  3205.     cmp.l    #$200,d3
  3206.     bne    warten_d
  3207.  
  3208.  
  3209.     lea    _IntBase(pc),a6        ; Window und Screen schließen        
  3210.     move.l    (a6),a6
  3211.     lea    window_d(pc),a0        
  3212.     move.l    (a0),a0
  3213.     jsr    _LVOCloseWindow(a6)
  3214.  
  3215.     lea    rastportv(pc),a0
  3216.     move.l    (a0),rp(a5)        ; RP Hauptfenster zurück
  3217.  
  3218. window_d0        
  3219.  
  3220.     rts
  3221.  
  3222. *--------------------------------------------------------------------------    
  3223.  
  3224. *--Screen,Window,-Strukturen-------------------------------------------
  3225. NewScreen    
  3226.         dc.w    0,0        ;links,oben
  3227.         dc.w    640,256        ;breite,Höhe
  3228.         dc.w    4        ;depth (Tiefe Bitebenen)
  3229.         dc.b    0,1        ;pens (Farbe Titel-Text u.Titelleiste)
  3230.         dc.w    $8000        ;viewmodes (hier Sprite)
  3231.         dc.w    $F        ;type (Customscreen)
  3232.         dc.l    0        ;font
  3233.         dc.l    0        ;title
  3234.         dc.l    0        ;gadgets
  3235.         dc.l    0        ;bitmap
  3236.  
  3237.  
  3238. NewWindow    
  3239.         dc.w    0,0                 ;links, oben
  3240.     dc.w    640,256            ;Breite, Hoehe
  3241.     dc.b    0,1            ;Pens des Screen
  3242.     dc.l    $108            ; IDCMP-Flags  hier Mousebuttons $8
  3243.         dc.l    $1a00            ;Window Flags  hier nur Borderles $800
  3244.     dc.l    0            ;KeinUser-Gadget
  3245.     dc.l    0                ;keine User-Checkmark
  3246.     dc.l    0              ;Titel des Window    
  3247. screen    ds.l    1                ; Zeiger auf eigenen Screen
  3248.     dc.l    0            ;keine Super Bitmap
  3249.     dc.w    100,20,640,256      ;Limits von Window-Groesse
  3250.     dc.w    $F            ;Use our screen, eigener Screen=$f
  3251.  
  3252. windowv        ds.l    1
  3253.     cnop    0,4
  3254. rastportv    ds.l    1
  3255.     cnop    0,4
  3256. viewportadv    ds.l    1
  3257.     cnop    0,4
  3258.  
  3259.  
  3260. NewWindow_d    
  3261.         dc.w    150,80              ;links, oben
  3262.     dc.w    420,90            ;Breite, Hoehe
  3263.     dc.b    0,1            ;Pens des Screen
  3264.     dc.l    $200            ; IDCMP-Flags  hier nur Windowclose $200
  3265.         dc.l    $1008            ;Window Flags  hier nur windowclose $8
  3266.     dc.l    0            ;KeinUser-Gadget
  3267.     dc.l    0                ;keine User-Checkmark
  3268.     dc.l    win_titel          ;Titel des Window    
  3269. screen_d ds.l    1                ; Zeiger auf eigenen Screen
  3270.     dc.l    0            ;keine Super Bitmap
  3271.     dc.w    100,20,640,256      ;Limits von Window-Groesse
  3272.     dc.w    $F            ;Use our screen, eigener Screen=$f
  3273.  
  3274. win_titel    dc.b    ' <- Continue <- Continue <- Continue',0
  3275.     cnop    0,4
  3276.  
  3277. window_d    ds.l    1
  3278.     cnop    0,4
  3279. rastport_d    ds.l    1
  3280.     cnop    0,4
  3281. viewportad_d    ds.l    1
  3282.     cnop    0,4
  3283.  
  3284. d_1    dc.b    '   Color of User-Directory-Block              ',0
  3285.     cnop    0,2
  3286. d_2    dc.b    '   Color of File-Header and File-List-Blocks  ',0
  3287.     cnop    0,2
  3288. d_3    dc.b    '   Color of all Data-Blocks                   ',0
  3289.     cnop    0,2
  3290. d_4    dc.b    '   - Bitmap without Boot-Blocks -             ',0
  3291.     cnop    0,2
  3292. d_5    dc.b    '   - Choosing an empty dir,the Programm stops:',0
  3293.     cnop    0,2
  3294. d_6    dc.b    '     then  continue by PARENT                 ',0
  3295.     cnop    0,2
  3296. d_7    dc.b    '   - continue now by close-gadget -           ',0
  3297.     cnop    0,2
  3298.  
  3299. NewWindow_b    
  3300.         dc.w    50,10               ;links, oben
  3301.     dc.w    160,70            ;Breite, Hoehe
  3302.     dc.b    0,1            ;Pens des Screen
  3303.     dc.l    $0            ; IDCMP-Flags  hier keine
  3304.         dc.l    $800            ;Window Flags  hier nur borderless $800
  3305.     dc.l    0            ;KeinUser-Gadget
  3306.     dc.l    0                ;keine User-Checkmark
  3307.     dc.l    0              ;Titel des Window    
  3308. screen_b ds.l    1                ; Zeiger auf eigenen Screen
  3309.     dc.l    0            ;keine Super Bitmap
  3310.     dc.w    50,20,640,256      ;Limits von Window-Groesse
  3311.     dc.w    $F            ;Use our screen, eigener Screen=$f
  3312.  
  3313. window_b    ds.l    1
  3314.     cnop    0,4
  3315. rastport_b    ds.l    1
  3316.     cnop    0,4
  3317. viewportad_b    ds.l    1
  3318.     cnop    0,4
  3319.  
  3320. b_1    dc.b    'Block  :',0
  3321.     cnop    0,2
  3322. b_2    dc.b    'Track  :',0
  3323.     cnop    0,2
  3324. b_3    dc.b    'Head   :',0
  3325.     cnop    0,2
  3326. b_4    dc.b    'Sektor :',0
  3327.     cnop    0,2
  3328.  
  3329.  
  3330. dosname    dc.b    'dos.library',0
  3331.     cnop    0,4
  3332. _DosBase ds.l    1
  3333.     cnop    0,4
  3334.  
  3335. intname    dc.b    'intuition.library',0
  3336.     cnop    0,4
  3337. _IntBase ds.l    1
  3338.     cnop    0,4
  3339.  
  3340. grafname dc.b    'graphics.library',0
  3341.     cnop    0,4
  3342. _GfxBase ds.l    1
  3343.     cnop    0,4
  3344.     
  3345. abc_anzahl    ds.l    8
  3346.     cnop    0,4
  3347.  
  3348. tabelle0    ds.l    40
  3349. tabelle
  3350.         dc.l    280            ; xl1
  3351.         dc.l    0            ; yl1
  3352.         dc.l    440            ; xr1
  3353.         dc.l    251            ; yr1
  3354.         dc.l    450            ; xl2
  3355.         dc.l    0            ; yl2
  3356.         dc.l    610            ; xr2
  3357.         dc.l    251            ; yr2
  3358.         dc.l    0            ; xxl1
  3359.         dc.l    0            ; yyl1
  3360.         dc.l    250            ; xxr1
  3361.         dc.l    235            ; yyr1
  3362.         dc.l    0            ; xxl2
  3363.         dc.l    239            ; yyl2
  3364.         dc.l    250            ; xxr2
  3365.         dc.l    251            ; yyr2
  3366.     cnop    0,4
  3367.  
  3368. text1        dc.b    ' 010203040506070'
  3369.     cnop    0,4
  3370. text2        dc.b    'P a r e n t'
  3371.     cnop    0,4
  3372. text3        dc.b    'Dir:'
  3373.     cnop    0,4
  3374. pfad_name    ds.l    20
  3375.     cnop    0,4    
  3376. vier_punkte    dc.b    '....',0
  3377.     cnop    0,4    
  3378.  
  3379.  
  3380.  
  3381. *------auf Quiet warten und Win u Scr schließen, Menu entfernen----------------------
  3382.  
  3383. *---------------------------- U-Prg um Hex in Dezimal zuwandeln ( in ASC II)
  3384.  
  3385. decl    clr.b    d3            ;0 = positive Zahl
  3386.     tst.l    d2            ;Zahl positiv    Zahl in d2
  3387.     bpl    plus            ;wenn so        -----------
  3388.     neg.l    d2            ;sonst wandeln
  3389.     move.b    #1,d3             ;markiert negative Zahl            
  3390. plus    moveq    #7,d0            ;8 Digits konnvertieren
  3391.     lea    buffer(pc),a0        ;+1 f. Platz f. Vorzeichen
  3392.     lea    pwrof10(pc),a1        ;Tabelle
  3393. nextt    moveq    #'0',d1            ;Fange mit Digit '0' an
  3394. dec    addq    #1,d1            ;Digit + 1
  3395.     sub.l    (a1),d2            ;noch drin?
  3396.     bcc.s    dec            ;wenn so
  3397.     subq    #1,d1            ;korrigiere Digit
  3398.     add.l    (a1),d2            ;den auch
  3399.     move.b    d1,(a0)+        ;Digiit -> Buffer
  3400.     lea    4(a1),a1        ;next power_10
  3401.     dbra    d0,nextt        ;for 8 Digits
  3402.     lea    buffer(pc),a0        ;Nun 0-Unterdr. u. Vorz.
  3403. rep    move.b    #' ',(a0)+        ;fuehrende Nullen
  3404.     cmp.b    #'0',(a0)        ;  durch Blanks
  3405.     beq    rep            ;    ersetzen
  3406.     tst.b    d3            ;war Zahl negativ?
  3407.     beq    done            ;wenn nicht
  3408.     move.b  #'-',-1(a0)        ;sonst - vorsetzen
  3409. done    
  3410.     lea    buffer(pc),a0
  3411.     cmp.b    #' ',7(a0)
  3412.     bne    done2
  3413.     move.b    #'0',7(a0)
  3414. done2
  3415.     rts
  3416.  
  3417. pwrof10    dc.l    10000000
  3418.     dc.l    1000000
  3419.     dc.l    100000
  3420.     dc.l    10000
  3421.     dc.l    1000
  3422.     dc.l    100
  3423.     dc.l    10
  3424.     dc.l    1
  3425.  
  3426. buffer    ds.l    3
  3427.     cnop    0,4
  3428.  
  3429.  
  3430. *-------------------------- Menuangaben----------------------
  3431.  
  3432. Menustruktur
  3433.     MENUSTR     1,men_na2,0,0,100,menti1,item11   ; eigner MenuName,nächstes Menu,li,oben,Br,^Menutitel,^Itemstruktur
  3434.  
  3435. menti1    dc.b    '    dfi',0
  3436.     cnop    0,2
  3437.  
  3438.     ITEMSTR     11,item12,0,0,100,12,$56,48    ; eig.Str,nächs.Str,li,oben,Br,Höhe,Flags,ASC II
  3439.  
  3440.     TEXTSTR     11,2,15,2,2,2        ; Strname,V-,H-Farbe,links,oben,Z-Modus
  3441.  
  3442. mtext11    dc.b    'df0:',0
  3443.     cnop    0,2
  3444.  
  3445.     ITEMSTR     12,item13,0,12,100,12,$56,49    ; eig.Str,nächs.Str,li,oben,Br,Höhe,Flags,ASC II
  3446.  
  3447.     TEXTSTR     12,2,15,2,2,2        ; Strname,V-,H-Farbe,links,oben,Z-Modus
  3448.  
  3449. mtext12    dc.b    'df1:',0
  3450.     cnop    0,2
  3451.  
  3452.  
  3453.     ITEMSTR     13,item14,0,24,100,12,$56,50    ; eig.Str,nächs.Str,li,oben,Br,Höhe,Flags,ASC II
  3454.  
  3455.     TEXTSTR     13,2,15,2,2,2        ; Strname,V-,H-Farbe,links,oben,Z-Modus
  3456.  
  3457. mtext13    dc.b    'df2:',0
  3458.     cnop    0,2
  3459.  
  3460.  
  3461.     ITEMSTR     14,0,0,36,100,12,$56,51    ; eig.Str,nächs.Str,li,oben,Br,Höhe,Flags,ASC II
  3462.  
  3463.     TEXTSTR     14,2,15,2,2,2        ; Strname,V-,H-Farbe,links,oben,Z-Modus
  3464.  
  3465. mtext14    dc.b    'df3:',0
  3466.     cnop    0,2
  3467.  
  3468. *             - - - - - - - - - - - - - - - - - - - - 
  3469.  
  3470.     MENUSTR     2,men_na3,100,0,100,menti2,item21    ; eigner MenuName,nächstes Menu,li,oben,Br,^Menutitel,^Itemstruktur
  3471.  
  3472. menti2    dc.b    '   Tools',0
  3473.     cnop    0,2
  3474.  
  3475.     ITEMSTR     21,item22,0,0,100,12,$11b,0    ; eig.Str,nächs.Str,li,oben,Br,Höhe,Flags,ASC II
  3476.  
  3477.     TEXTSTR     21,2,3,2,2,0        ; Strname,V-,H-Farbe,links,oben,Z-Modus
  3478.  
  3479. mtext21    dc.b    '   BitMap',0
  3480.     cnop    0,2
  3481.  
  3482.     ITEMSTR     22,item23,0,12,100,12,$52,0    ; eig.Str,nächs.Str,li,oben,Br,Höhe,Flags,ASC II
  3483.  
  3484.     TEXTSTR     22,2,3,2,2,2        ; Strname,V-,H-Farbe,links,oben,Z-Modus
  3485.  
  3486. mtext22    dc.b    'Show Memory',0
  3487.     cnop    0,2
  3488.  
  3489.     ITEMSTR     220,0,80,6,90,12,$12,0    ; eig.Str,nächs.Str,li,oben,Br,Höhe,Flags,ASC II
  3490.  
  3491.     TEXTSTR     220,2,3,2,2,0        ; Strname,V-,H-Farbe,links,oben,Z-Modus
  3492.  
  3493. mtext220 dc.b    '            ',0
  3494.     cnop    0,2
  3495.  
  3496.  
  3497.     ITEMSTR     23,item24,0,24,100,12,$52,0    ; eig.Str,nächs.Str,li,oben,Br,Höhe,Flags,ASC II
  3498.  
  3499.     TEXTSTR     23,2,3,2,2,2        ; Strname,V-,H-Farbe,links,oben,Z-Modus
  3500.  
  3501. mtext23    dc.b    'Screen back',0
  3502.     cnop    0,2
  3503.  
  3504.  
  3505.     ITEMSTR     24,0,0,36,100,12,$52,0    ; eig.Str,nächs.Str,li,oben,Br,Höhe,Flags,ASC II
  3506.  
  3507.     TEXTSTR     24,2,3,2,2,2        ; Strname,V-,H-Farbe,links,oben,Z-Modus
  3508.  
  3509. mtext24    dc.b    'Colors',0
  3510.     cnop    0,2
  3511.  
  3512. *             - - - - - - - - - - - - - - - - - - - - 
  3513.  
  3514.     MENUSTR     3,0,200,0,90,menti3,item31    ; eigner MenuName,nächstes Menu,li,oben,Br,^Menutitel,^Itemstruktur
  3515.  
  3516. menti3    dc.b    'Info/Quit',0
  3517.     cnop    0,2
  3518.  
  3519.     ITEMSTR     31,item32,0,0,90,12,$52,0    ; eig.Str,nächs.Str,li,oben,Br,Höhe,Flags,ASC II
  3520.  
  3521.     TEXTSTR     31,2,3,2,2,2        ; Strname,V-,H-Farbe,links,oben,Z-Modus
  3522.  
  3523. mtext31    dc.b    '   Info ',0
  3524.     cnop    0,2
  3525.  
  3526.     ITEMSTR     32,0,0,12,90,12,$52,0    ; eig.Str,nächs.Str,li,oben,Br,Höhe,Flags,ASC II
  3527.  
  3528.     TEXTSTR     32,2,3,2,2,2        ; Strname,V-,H-Farbe,links,oben,Z-Modus
  3529.  
  3530. mtext32    dc.b    '   Quit',0
  3531.     cnop    0,2
  3532.  
  3533.  
  3534. *---------------------------------------------------------------
  3535.  
  3536. trdevice    dc.b    'trackdisk.device',0
  3537.     cnop    0,2
  3538.  
  3539. diskio        ds.l    20
  3540.     cnop    0,2
  3541. readrepl    ds.l    8
  3542.     cnop    0,2
  3543. diskbuffer    ds.l    10
  3544.     cnop    0,2
  3545.  
  3546. dfi_name    dc.b    'DF0:DF1:DF2:DF3:',0
  3547.     cnop    0,4
  3548.  
  3549.  
  3550. text_me1    dc.b    'No Disk in df :',0
  3551.     cnop    0,4
  3552. text_me2    dc.b    'Not enough Memory',0
  3553.     cnop    0,4
  3554.